tool8 - northern-bites/nbites GitHub Wiki

tool8

overview

Final version of the java based 'nbtool' system developed by pkoch

Uses json headers, improves reliability when connecting to and controlling the robots, improves java - c++ interface.

Enforces log structure and eases log parsing.

change list

  • ant is required to build the tool. use
   sudo apt-get update
   sudo apt-get install ant

this will also ensure that your machine has java of required version (7).

  • all tool7 preferences will be dropped. After you resize your window again though, you probably will never notice.

  • SExpr in log header replaced with json object. See json. Both c++ and java json libs are internal.

  • Log data field and full log header no longer visible. Instead, each log is divided into

  • global log header as json object

  • array of blocks, each with data and individual json object.

  • See java log interface and c++ log interface

  • logging and controlling a robot is done by duplexing one socket.

  • nbcross may connect to remote hosted tools. use

nbcross -s address_of_tool

this is very useful if you wish to run your java nbtool and nbcross instance on different virtual machines.

  • support for automatic unit tests in c++ and java

  • to run java unit tests, add 'tests' argument to tool invocation

  • c++ tests run automatically by nbcross

  • nbcross functions now accept variable arguments. note that all functions are created with

NBCROSS_FUNCTION(name, va, ...)

where va is a bool indicating variable arguments, and the variadic macro args is an optional list of required arguments. this macro must be immediately followed by

 (const std::vector<nbl::logptr> &arguments){ /* your function defition */ }

The parenthesized statement is to make clear the arguments to your function, and is then followed by the bracketed function definition.

  • log sorting / searching / streaming is hard coded to typical values which are 'supposed/typically' to be correct.

  • nbtool has it's own system independent file chooser

  • use tab like on a command line

  • allows creation of arbitrary path structure

  • shows current directory contents, which are click-selectable.

  • may use drag and drop file selection (who does this???)

  • idk. It is easier. Use it. Also it's mandatory so.

  • Log views must specify what log classes they support in their implementation.

  • Log view is instantiated on startup to check conformance.

  • VisionView provides functionality duplicated over many vision-type views.

  • numerous general static classes in nbtool.util provide utility

  • ClassFinder for finding all instances of code in our codebase

  • Debug for debugging output levels and colors. Also, code location in printout

  • Robots for getting full list of robots along with hostnames and ip addresses.

  • SharedConstants for defining constants in LOGGING_CONSTANTS.json to use in both c++ and java

  • note this class is mirrored in Log.hpp (c++)

detailed structure