{
    "componentChunkName": "component---src-components-page-template-jsx",
    "path": "/system/subsystems/input",
    "result": {"data":{"mdx":{"id":"50052e48-c453-53fe-9350-2f91895af39d","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"section\": \"System\",\n  \"chapter\": \"Subsystems\",\n  \"title\": \"Input\",\n  \"description\": \"How inputs are handled in the NUbots codebase.\",\n  \"slug\": \"/system/subsystems/input\",\n  \"authors\": [\"Ysobel Sims (@ysims)\", \"Liam Craft (@Crafty15)\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Input to the system includes cameras, \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/RoboCup-Humanoid-TC/GameController\"\n  }, \"Game Controller\"), \" and \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://optitrack.com/products/natnet-sdk/\"\n  }, \"NatNet\"), \".\"), mdx(\"h2\", {\n    \"id\": \"cameras\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#cameras\",\n    \"aria-label\": \"cameras permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Cameras\"), mdx(\"p\", null, \"The cameras used on the NUgus robot are \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.flir.com/support/products/blackfly-s-usb3/?vertical=machine+vision&segment=iis#Overview\"\n  }, \"Flir Blackfly S USB3's\"), \".\"), mdx(\"p\", null, \"The \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.flir.com/support-center/iis/machine-vision/downloads/spinnaker-sdk-and-firmware-download/\"\n  }, \"Spinnaker SDK\"), \" is FLIR's Genicam API library which includes a GUI program called SpinView, used to operate the cameras from a PC, as well as extensive documentation.\"), mdx(\"p\", null, \"The cameras have the following parameters that are used by the object detection algorithm.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Parameter\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Type\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"serial_number\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"string\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The serial number of the camera. This is used to identify the camera and distinguish it from other cameras in the robot.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lens.projection\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"string\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The lens projection type. Can be rectilinear, equidistant or equisold.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lens.focal_length\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"float\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The normalised focal length. It is defined as focal length in pixels divided by image width. The focal length is the angle of view and magnification.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lens.center\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"2-dimensional vector\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The normalised image centre offset. Represents the pixels from the centre of the image to the optical axis, divided by the image width\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lens.k\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"2-dimensional vector\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The polynomial distortion coefficients for the length\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lens.fov\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"float (radians)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Field of view. The angular diameter that the lens covers (the area that light hits on the sensor).\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"roll_offset\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"float (radians)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Roll of the camera in radians to account for physical differences from NUgus print manufacturing and assembly to align with the camera's virtual focal point.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"pitch_offset\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"float (radians)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Pitch of the camera in radians to account for physical differences from NUgus print manufacturing and assembly to align with the camera's virtual focal point.\")))), mdx(\"p\", null, \"The following settings are applied to the cameras on startup. (Note: These are the camera settings we currently use, but there are many more. See the full \", mdx(\"a\", {\n    href: \"#settings_list\"\n  }, \"list\"), \" at the bottom of this page.)\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Parameter\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Type\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"PixelFormat\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Format of the pixel provided by the camera\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"Width\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Width of the source image\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"Height\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Height of the source image\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"OffsetX\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Horizontal offset from the origin to the ROI (in pixels)\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"OffsetY\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Vertical offset from the origin to the ROI (in pixels)\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"ExposureAuto\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sets the automatic exposure mode\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"AutoExposureExposureTimeUpperLimit\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Float\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The largest exposure time that auto exposure can set\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"AutoExposureTargetGreyValueAuto\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Whether or not the target image grey level is automatically set by the camera.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"AutoExposureTargetGreyValue\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Manual target grey level applied to the camera to compensate for light level.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"BalanceWhiteAuto\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Compensates for colour shifts caused by different lighting conditions.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"BalanceRatioSelector\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Set whether to balance red or blue.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"BalanceRatio\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Float\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The ratio the camera will use for red or blue (set above) to balance for accurate colours.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"GainAuto\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enumeration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sets the automatic gain mode. In automatic modes, the camera adjusts the gain to maximize the dynamic range.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"AcquisitionFrameRateEnable\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Boolean\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Allows manual control of the frame rate\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"AcquisitionFrameRate\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Float\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"User controlled acquisition frame rate in hertz\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"DeviceLinkThroughputLimit\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Limits the maximum bandwidth on the USB bus. Can limit the framerate.\")))), mdx(\"p\", null, \"These parameters are set for each camera as \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"configuration values\"), \" in the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/NUbots/NUbots/tree/main/module/input/Camera/data/config\"\n  }, \"Camera module\"), \". Configuration files stored in the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/NUbots/NUbots/tree/main/module/input/Camera/data/config/Cameras\"\n  }, \"config/Cameras\"), \" directory are common to all robots, and configs that are specific to a particular robot are located in that robot's respective directory. The values for the left camera on the robot will be stored in \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Left.yaml\"), \". The values for the right camera on the robot will be stored in \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Right.yaml\"), \", however this is currently not used.\"), mdx(\"p\", null, \"The parameters are used in the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Camera module\"), \" to find and set up the cameras. The Camera module emits \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/NUbots/NUbots/tree/main/shared/message/input/Image.proto\"\n  }, \"Image messages\"), \".\"), mdx(\"p\", null, \"The \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/NUbots/NUbots/tree/main/shared/utility/vision/projection.hpp\"\n  }, \"projection tool\"), \", based on \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://wiki.panotools.org/Fisheye_Projection\"\n  }, \"panotools' fisheye projection calculations\"), \", maps a portion of the surface of a sphere to a flat image. The type of projection is specified by the above parameter \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"lens.projection\"), \".\"), mdx(\"details\", {\n    id: \"settings_list\"\n  }, mdx(\"summary\", null, \"Click here to see a full list of camera settings\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"This file is a print out directly from the cameras using the \", mdx(\"a\", {\n    parentName: \"strong\",\n    \"href\": \"https://github.com/AravisProject/aravis\"\n  }, \"arv-tool-0.8\"), \" command line utility.\"), \"\\nThis list was produced by running the command \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"arv-tool-0.8 features\"), \" with a camera connected to the computer via USB. Run \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"arv-tool-0.8 -h\"), \" for more command information.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"Point Grey Research-1E100115138C-0115138C (USB3)\\nCategory    : 'Root'\\nCategory    : 'AcquisitionControl'\\n    Enumeration  : [RW] 'AcquisitionMode'\\n        EnumEntry   : 'MultiFrame'\\n        EnumEntry   : 'SingleFrame'\\n        EnumEntry   : 'Continuous'\\n    Command      : [WO] 'AcquisitionStart'\\n    Command      : [WO] 'AcquisitionStop'\\n    Integer      : [RW] 'AcquisitionFrameCount'\\n    Integer      : [RW] 'AcquisitionBurstFrameCount'\\n    Enumeration  : [RW] 'ExposureMode'\\n        EnumEntry   : 'TriggerWidth'\\n        EnumEntry   : 'Timed'\\n    Float        : [RW] 'ExposureTime'\\n    Enumeration  : [RW] 'ExposureAuto'\\n        EnumEntry   : 'Continuous'\\n        EnumEntry   : 'Once'\\n        EnumEntry   : 'Off'\\n    Float        : [RW] 'AcquisitionFrameRate'\\n    Float        : [RO] 'AcquisitionResultingFrameRate'\\n    Boolean      : [RW] 'AcquisitionFrameRateEnable'\\n    Float        : [RW] 'AcquisitionLineRate'\\n    Enumeration  : [RW] 'TriggerSelector'\\n          * TriggerMode\\n          * TriggerSoftware\\n          * TriggerSource\\n          * TriggerActivation\\n          * TriggerOverlap\\n          * TriggerDelay\\n        EnumEntry   : 'FrameBurstStart'\\n        EnumEntry   : 'FrameStart'\\n        EnumEntry   : 'AcquisitionStart'\\n    Enumeration  : [RW] 'TriggerMode'\\n        EnumEntry   : 'On'\\n        EnumEntry   : 'Off'\\n    Command      : [WO] 'TriggerSoftware'\\n    Enumeration  : [RW] 'TriggerSource'\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n        EnumEntry   : 'Counter1End'\\n        EnumEntry   : 'Counter0End'\\n        EnumEntry   : 'Counter1Start'\\n        EnumEntry   : 'Counter0Start'\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line0'\\n        EnumEntry   : 'Software'\\n    Enumeration : 'TriggerActivation' (Not available)\\n        EnumEntry   : 'AnyEdge'\\n        EnumEntry   : 'RisingEdge'\\n        EnumEntry   : 'FallingEdge'\\n        EnumEntry   : 'LevelHigh'\\n        EnumEntry   : 'LevelLow'\\n    Enumeration  : [RW] 'TriggerOverlap'\\n        EnumEntry   : 'ReadOut'\\n        EnumEntry   : 'Off'\\n    Float        : [RW] 'TriggerDelay'\\n    Enumeration  : [RW] 'SensorShutterMode'\\n        EnumEntry   : 'Global'\\nCategory    : 'AnalogControl'\\n    Enumeration  : [RW] 'GainSelector'\\n          * GainRaw\\n          * Gain\\n        EnumEntry   : 'All'\\n    Float        : [RW] 'Gain'\\n    Enumeration  : [RW] 'GainAuto'\\n        EnumEntry   : 'Continuous'\\n        EnumEntry   : 'Once'\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RW] 'BlackLevelSelector'\\n          * BlackLevelRaw\\n          * BlackLevel\\n        EnumEntry   : 'Digital'\\n        EnumEntry   : 'Analog'\\n        EnumEntry   : 'All'\\n    Float        : [RW] 'BlackLevel'\\n    Enumeration  : [RW] 'BalanceRatioSelector'\\n          * BalanceRatio\\n        EnumEntry   : 'Blue'\\n        EnumEntry   : 'Red'\\n    Float        : [RW] 'BalanceRatio'\\n    Enumeration  : [RW] 'BalanceWhiteAuto'\\n        EnumEntry   : 'Continuous'\\n        EnumEntry   : 'Once'\\n        EnumEntry   : 'Off'\\n    Float        : [RW] 'Gamma'\\n    Boolean      : [RW] 'GammaEnable'\\n    Boolean     : 'SharpeningEnable' (Not available)\\n    Boolean     : 'SharpeningAuto' (Not available)\\n    Float       : 'Sharpening' (Not available)\\n    Float       : 'SharpeningThreshold' (Not available)\\nCategory    : 'ImageFormatControl'\\n    Integer      : [RO] 'SensorWidth'\\n    Integer      : [RO] 'SensorHeight'\\n    Integer      : [RO] 'WidthMax'\\n    Integer      : [RO] 'HeightMax'\\n    Integer      : [RW] 'Width'\\n    Integer      : [RW] 'Height'\\n    Integer      : [RW] 'OffsetX'\\n    Integer      : [RW] 'OffsetY'\\n    Enumeration  : [RW] 'PixelFormat'\\n        EnumEntry   : 'BGRa8'\\n        EnumEntry   : 'BGR8'\\n        EnumEntry   : 'YCbCr411_8'\\n        EnumEntry   : 'YCbCr422_8'\\n        EnumEntry   : 'YCbCr8'\\n        EnumEntry   : 'BayerBG12p' (Not available)\\n        EnumEntry   : 'BayerGB12p' (Not available)\\n        EnumEntry   : 'BayerRG12p'\\n        EnumEntry   : 'BayerGR12p' (Not available)\\n        EnumEntry   : 'Mono12p'\\n        EnumEntry   : 'YUV444Packed'\\n        EnumEntry   : 'YUV422Packed'\\n        EnumEntry   : 'YUV411Packed'\\n        EnumEntry   : 'BayerBG12Packed' (Not available)\\n        EnumEntry   : 'BayerGB12Packed' (Not available)\\n        EnumEntry   : 'BayerRG12Packed'\\n        EnumEntry   : 'BayerGR12Packed' (Not available)\\n        EnumEntry   : 'Mono12Packed'\\n        EnumEntry   : 'BayerBG16' (Not available)\\n        EnumEntry   : 'BayerGB16' (Not available)\\n        EnumEntry   : 'BayerRG16'\\n        EnumEntry   : 'BayerGR16' (Not available)\\n        EnumEntry   : 'BayerBG8' (Not available)\\n        EnumEntry   : 'BayerGB8' (Not available)\\n        EnumEntry   : 'BayerRG8'\\n        EnumEntry   : 'BayerGR8' (Not available)\\n        EnumEntry   : 'RGB8Packed'\\n        EnumEntry   : 'Mono16'\\n        EnumEntry   : 'Mono8'\\n    Enumeration  : [RO] 'PixelSize'\\n        EnumEntry   : 'Bpp96'\\n        EnumEntry   : 'Bpp64'\\n        EnumEntry   : 'Bpp48'\\n        EnumEntry   : 'Bpp36'\\n        EnumEntry   : 'Bpp32'\\n        EnumEntry   : 'Bpp30'\\n        EnumEntry   : 'Bpp24'\\n        EnumEntry   : 'Bpp20'\\n        EnumEntry   : 'Bpp16'\\n        EnumEntry   : 'Bpp14'\\n        EnumEntry   : 'Bpp12'\\n        EnumEntry   : 'Bpp10'\\n        EnumEntry   : 'Bpp8'\\n        EnumEntry   : 'Bpp4'\\n        EnumEntry   : 'Bpp2'\\n        EnumEntry   : 'Bpp1'\\n    Enumeration  : [RO] 'PixelColorFilter'\\n        EnumEntry   : 'BayerBG'\\n        EnumEntry   : 'BayerGR'\\n        EnumEntry   : 'BayerGB'\\n        EnumEntry   : 'BayerRG'\\n        EnumEntry   : 'None'\\n    Integer      : [RO] 'PixelDynamicRangeMin'\\n    Integer      : [RO] 'PixelDynamicRangeMax'\\n    Boolean      : [RW] 'IspEnable'\\n    Enumeration  : [RW] 'BinningSelector'\\n          * BinningHorizontalMode\\n          * BinningVerticalMode\\n          * BinningHorizontal\\n          * BinningVertical\\n        EnumEntry   : 'ISP'\\n        EnumEntry   : 'Sensor'\\n        EnumEntry   : 'All'\\n    Enumeration  : [RW] 'BinningHorizontalMode'\\n        EnumEntry   : 'Average'\\n        EnumEntry   : 'Sum'\\n    Enumeration  : [RW] 'BinningVerticalMode'\\n        EnumEntry   : 'Average'\\n        EnumEntry   : 'Sum'\\n    Integer      : [RW] 'BinningHorizontal'\\n    Integer      : [RW] 'BinningVertical'\\n    Enumeration  : [RW] 'DecimationSelector'\\n          * DecimationHorizontalMode\\n          * DecimationVerticalMode\\n          * DecimationHorizontal\\n          * DecimationVertical\\n        EnumEntry   : 'Sensor'\\n        EnumEntry   : 'All'\\n    Enumeration  : [RW] 'DecimationHorizontalMode'\\n        EnumEntry   : 'Discard'\\n    Enumeration  : [RW] 'DecimationVerticalMode'\\n        EnumEntry   : 'Discard'\\n    Integer      : [RW] 'DecimationHorizontal'\\n    Integer      : [RW] 'DecimationVertical'\\n    Boolean      : [RW] 'ReverseX'\\n    Boolean      : [RW] 'ReverseY'\\n    Enumeration  : [RW] 'TestPatternGeneratorSelector'\\n          * TestPattern\\n        EnumEntry   : 'PipelineStart'\\n        EnumEntry   : 'Sensor'\\n    Enumeration  : [RW] 'TestPattern'\\n        EnumEntry   : 'SensorTestPattern'\\n        EnumEntry   : 'Increment' (Not available)\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RW] 'AdcBitDepth'\\n        EnumEntry   : 'Bit10'\\nCategory    : 'DeviceControl'\\n    Enumeration  : [RO] 'DeviceScanType'\\n        EnumEntry   : 'Areascan'\\n    StringReg    : [RO] 'DeviceVendorName'\\n    StringReg    : [RO] 'DeviceModelName'\\n    StringReg    : [RO] 'SensorDescription'\\n    StringReg    : [RO] 'DeviceManufacturerInfo'\\n    StringReg    : [RO] 'DeviceVersion'\\n    StringReg    : [RO] 'DeviceFirmwareVersion'\\n    StringReg    : [RO] 'DeviceSerialNumber'\\n    StringReg    : [RO] 'DeviceID'\\n    StringReg    : [RW] 'DeviceUserID'\\n    Enumeration  : [RO] 'DeviceTLType'\\n        EnumEntry   : 'Custom'\\n        EnumEntry   : 'USB3Vision'\\n        EnumEntry   : 'CoaXPress'\\n        EnumEntry   : 'CameraLinkHS'\\n        EnumEntry   : 'CameraLink'\\n        EnumEntry   : 'GigEVision'\\n    Integer      : [RO] 'DeviceGenCPVersionMajor'\\n    Integer      : [RO] 'DeviceGenCPVersionMinor'\\n    Integer      : [RO] 'DeviceMaxThroughput'\\n    Integer      : [RO] 'DeviceLinkSpeed'\\n    Integer      : [RW] 'DeviceLinkThroughputLimit'\\n    Float        : [RW] 'DeviceLinkBandwidthReserve'\\n    Integer      : [RO] 'DeviceLinkCurrentThroughput'\\n    Command      : [WO] 'DeviceReset'\\n    Enumeration  : [RW] 'DeviceIndicatorMode'\\n        EnumEntry   : 'ErrorStatus'\\n        EnumEntry   : 'Active'\\n        EnumEntry   : 'Inactive'\\n    Float        : [RO] 'DeviceTemperature'\\n    Integer      : [RO] 'Timestamp'\\n    Command      : [WO] 'TimestampLatch'\\n    Integer      : [RO] 'TimestampIncrement'\\n    Enumeration  : [RW] 'DevicePowerSupplySelector'\\n          * PowerSupplyVoltage\\n          * PowerSupplyCurrent\\n        EnumEntry   : 'External'\\n    Float        : [RO] 'PowerSupplyVoltage'\\n    Float        : [RO] 'PowerSupplyCurrent'\\n    Integer      : [RO] 'DeviceUptime'\\n    Integer      : [RO] 'LinkUptime'\\n    Integer      : [RO] 'EnumerationCount'\\n    Command      : [WO] 'FactoryReset'\\n    Integer      : [RO] 'MaxDeviceResetTime'\\nCategory    : 'TransportLayerControl'\\n    Integer      : [RO] 'PayloadSize'\\n    Integer      : [RW] 'TLParamsLocked'\\n    Category    : 'USB3Vision'\\n        Integer      : [RO] 'U3VMaxDeviceResponseTime'\\n        Integer      : [RW] 'U3VMessageChannelID'\\n        Integer      : [RW] 'U3VAccessPrivilege'\\n        Integer      : [RO] 'U3VVersionMajor'\\n        Integer      : [RO] 'U3VVersionMinor'\\n        Integer      : [RO] 'U3VCPCapability'\\n              * U3VCPSIRMAvailable\\n              * U3VCPEIRMAvailable\\n              * U3VCPIIDC2Available\\n        Boolean      : [RO] 'U3VCPSIRMAvailable'\\n        Boolean      : [RO] 'U3VCPEIRMAvailable'\\n        Boolean      : [RO] 'U3VCPIIDC2Available'\\n        Integer      : [RO] 'U3VMaxCommandTransferLength'\\n        Integer      : [RO] 'U3VMaxAcknowledgeTransferLength'\\n        Integer      : [RO] 'U3VNumberOfStreamChannels'\\n        Enumeration  : [RO] 'U3VCurrentSpeed'\\n            EnumEntry   : 'SuperSpeed'\\n            EnumEntry   : 'HighSpeed'\\n            EnumEntry   : 'FullSpeed'\\n            EnumEntry   : 'LowSpeed'\\n    Integer      : [RO] 'LinkErrorCount'\\n    Integer      : [RO] 'LinkRecoveryCount'\\nCategory    : 'SequencerControl'\\n    Enumeration  : [RW] 'SequencerMode'\\n        EnumEntry   : 'On'\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RW] 'SequencerConfigurationMode'\\n        EnumEntry   : 'On'\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RO] 'SequencerConfigurationValid'\\n        EnumEntry   : 'Yes'\\n        EnumEntry   : 'No'\\n    Enumeration  : [RW] 'SequencerFeatureSelector'\\n          * SequencerFeatureEnable\\n        EnumEntry   : 'Height'\\n        EnumEntry   : 'Width'\\n        EnumEntry   : 'OffsetY'\\n        EnumEntry   : 'OffsetX'\\n        EnumEntry   : 'Gain'\\n        EnumEntry   : 'ExposureTime'\\n    Boolean      : [RW] 'SequencerFeatureEnable'\\n    Integer      : [RW] 'SequencerSetStart'\\n    Integer     : 'SequencerSetActive' (Not available)\\n    Integer      : [RW] 'SequencerSetSelector'\\n          * SequencerSetValid\\n          * SequencerSetSave\\n          * SequencerSetLoad\\n          * SequencerPathSelector\\n          * SequencerTriggerSource\\n          * SequencerTriggerActivation\\n          * SequencerSetNext\\n    Enumeration  : [RO] 'SequencerSetValid'\\n        EnumEntry   : 'Yes'\\n        EnumEntry   : 'No'\\n    Command      : [RW] 'SequencerSetSave'\\n    Command      : [RW] 'SequencerSetLoad'\\n    Integer      : [RW] 'SequencerPathSelector'\\n          * SequencerTriggerSource\\n          * SequencerTriggerActivation\\n          * SequencerSetNext\\n    Enumeration  : [RW] 'SequencerTriggerSource'\\n        EnumEntry   : 'FrameStart'\\n        EnumEntry   : 'Off'\\n    Enumeration : 'SequencerTriggerActivation' (Not available)\\n        EnumEntry   : 'LevelLow' (Not available)\\n        EnumEntry   : 'LevelHigh' (Not available)\\n        EnumEntry   : 'AnyEdge' (Not available)\\n        EnumEntry   : 'FallingEdge' (Not available)\\n        EnumEntry   : 'RisingEdge' (Not available)\\n    Integer     : 'SequencerSetNext' (Not available)\\nCategory    : 'ColorTransformationControl'\\n    Enumeration : 'ColorTransformationSelector' (Not available)\\n        EnumEntry   : 'RGBtoYUV' (Not available)\\n        EnumEntry   : 'RGBtoRGB' (Not available)\\n    Boolean     : 'ColorTransformationEnable' (Not available)\\n    Enumeration : 'ColorTransformationValueSelector' (Not available)\\n        EnumEntry   : 'Offset2' (Not available)\\n        EnumEntry   : 'Offset1' (Not available)\\n        EnumEntry   : 'Offset0' (Not available)\\n        EnumEntry   : 'Gain22'\\n        EnumEntry   : 'Gain21'\\n        EnumEntry   : 'Gain20'\\n        EnumEntry   : 'Gain12'\\n        EnumEntry   : 'Gain11'\\n        EnumEntry   : 'Gain10'\\n        EnumEntry   : 'Gain02'\\n        EnumEntry   : 'Gain01'\\n        EnumEntry   : 'Gain00'\\n    Float       : 'ColorTransformationValue' (Not available)\\n    Enumeration  : [RW] 'RgbTransformLightSource'\\n        EnumEntry   : 'Custom'\\n        EnumEntry   : 'Shade8000K'\\n        EnumEntry   : 'Cloudy6500K'\\n        EnumEntry   : 'Daylight5000K'\\n        EnumEntry   : 'CoolFluorescent4000K'\\n        EnumEntry   : 'WarmFluorescent3000K'\\n        EnumEntry   : 'Tungsten2800K'\\n        EnumEntry   : 'General'\\n    Boolean     : 'SaturationEnable' (Not available)\\n    Float       : 'Saturation' (Not available)\\nCategory    : 'AutoAlgorithmControl'\\n    Enumeration  : [RW] 'AutoAlgorithmSelector'\\n          * AasRoiEnable\\n          * AasRoiOffsetX\\n          * AasRoiOffsetY\\n          * AasRoiWidth\\n          * AasRoiHeight\\n        EnumEntry   : 'Ae'\\n        EnumEntry   : 'Awb'\\n    Boolean      : [RW] 'AasRoiEnable'\\n    Integer     : 'AasRoiOffsetX' (Not available)\\n    Integer     : 'AasRoiOffsetY' (Not available)\\n    Integer     : 'AasRoiWidth' (Not available)\\n    Integer     : 'AasRoiHeight' (Not available)\\n    Enumeration  : [RW] 'BalanceWhiteAutoProfile'\\n        EnumEntry   : 'Outdoor'\\n        EnumEntry   : 'Indoor'\\n    Float        : [RW] 'BalanceWhiteAutoLowerLimit'\\n    Float        : [RW] 'BalanceWhiteAutoUpperLimit'\\n    Float        : [RW] 'BalanceWhiteAutoDamping'\\n    Enumeration  : [RW] 'AutoExposureTargetGreyValueAuto'\\n        EnumEntry   : 'Continuous'\\n        EnumEntry   : 'Off'\\n    Float       : 'AutoExposureTargetGreyValue' (Not available)\\n    Enumeration  : [RW] 'AutoExposureLightingMode'\\n        EnumEntry   : 'Normal'\\n        EnumEntry   : 'Frontlight'\\n        EnumEntry   : 'Backlight'\\n    Enumeration  : [RW] 'AutoExposureMeteringMode'\\n        EnumEntry   : 'Partial'\\n        EnumEntry   : 'Spot'\\n        EnumEntry   : 'Average'\\n    Float        : [RW] 'AutoExposureExposureTimeLowerLimit'\\n    Float        : [RW] 'AutoExposureExposureTimeUpperLimit'\\n    Float        : [RW] 'AutoExposureGainLowerLimit'\\n    Float        : [RW] 'AutoExposureGainUpperLimit'\\n    Float        : [RW] 'AutoExposureGreyValueLowerLimit'\\n    Float        : [RW] 'AutoExposureGreyValueUpperLimit'\\n    Float        : [RW] 'AutoExposureEVCompensation'\\n    Float        : [RW] 'AutoExposureControlLoopDamping'\\n    Enumeration  : [RW] 'AutoExposureControlPriority'\\n        EnumEntry   : 'ExposureTime'\\n        EnumEntry   : 'Gain'\\nCategory    : 'FlatFieldCorrectionControl'\\n    Boolean      : [RW] 'FfcEnable'\\n    Enumeration  : [RW] 'FfcMode'\\n        EnumEntry   : 'Calibration'\\n        EnumEntry   : 'User'\\n        EnumEntry   : 'Factory'\\n    Category    : 'FfcUserTableControl'\\n        Integer     : 'FfcUserTableXCoordinate' (Not available)\\n        Float       : 'FfcUserGain' (Not available)\\n        Integer     : 'FfcUserOffset' (Not available)\\n        Command     : 'FfcUserTableReset' (Not available)\\n        Command     : 'FfcUserTableSave' (Not available)\\n        Register    : 'FfcUserGainAll' (Not available)\\n        Register    : 'FfcUserOffsetAll' (Not available)\\nCategory    : 'DefectivePixelCorrection'\\n    Boolean      : [RW] 'DefectCorrectStaticEnable'\\n    Enumeration  : [RW] 'DefectCorrectionMode'\\n        EnumEntry   : 'Highlight'\\n        EnumEntry   : 'Average'\\n    Integer      : [RW] 'DefectTablePixelCount'\\n    Integer      : [RW] 'DefectTableIndex'\\n          * DefectTableCoordinateX\\n          * DefectTableCoordinateY\\n    Integer      : [RW] 'DefectTableCoordinateX'\\n    Integer      : [RW] 'DefectTableCoordinateY'\\n    Command      : [RW] 'DefectTableApply'\\n    Command      : [WO] 'DefectTableSave'\\n    Command      : [RW] 'DefectTableFactoryRestore'\\nCategory    : 'UserSetControl'\\n    Enumeration  : [RW] 'UserSetSelector'\\n          * UserSetLoad\\n          * UserSetSave\\n        EnumEntry   : 'UserSet1'\\n        EnumEntry   : 'UserSet0'\\n        EnumEntry   : 'Default'\\n    Command      : [RW] 'UserSetLoad'\\n    Command      : [RW] 'UserSetSave'\\n    Enumeration  : [RW] 'UserSetDefault'\\n        EnumEntry   : 'UserSet1'\\n        EnumEntry   : 'UserSet0'\\n        EnumEntry   : 'Default'\\n    Enumeration  : [RW] 'UserSetFeatureSelector'\\n        EnumEntry   : 'Width'\\n        EnumEntry   : 'V3_3EnableLine3'\\n        EnumEntry   : 'V3_3EnableLine2'\\n        EnumEntry   : 'V3_3EnableLine1'\\n        EnumEntry   : 'V3_3EnableLine0'\\n        EnumEntry   : 'UserOutputValueAll'\\n        EnumEntry   : 'TriggerSourceFrameStart'\\n        EnumEntry   : 'TriggerSourceFrameBurstStart'\\n        EnumEntry   : 'TriggerSourceAcquisitionStart'\\n        EnumEntry   : 'TriggerOverlapFrameStart'\\n        EnumEntry   : 'TriggerOverlapFrameBurstStart'\\n        EnumEntry   : 'TriggerOverlapAcquisitionStart'\\n        EnumEntry   : 'TriggerModeFrameStart'\\n        EnumEntry   : 'TriggerModeFrameBurstStart'\\n        EnumEntry   : 'TriggerModeAcquisitionStart'\\n        EnumEntry   : 'TriggerDelayFrameStart'\\n        EnumEntry   : 'TriggerDelayFrameBurstStart'\\n        EnumEntry   : 'TriggerDelayAcquisitionStart'\\n        EnumEntry   : 'TriggerActivationFrameStart'\\n        EnumEntry   : 'TriggerActivationFrameBurstStart'\\n        EnumEntry   : 'TriggerActivationAcquisitionStart'\\n        EnumEntry   : 'TransferOperationMode'\\n        EnumEntry   : 'TransferControlMode'\\n        EnumEntry   : 'TransferBlockCount'\\n        EnumEntry   : 'TestPatternSensor'\\n        EnumEntry   : 'TestPatternPipelineStart'\\n        EnumEntry   : 'SharpeningThreshold'\\n        EnumEntry   : 'SharpeningEnable'\\n        EnumEntry   : 'SharpeningAuto'\\n        EnumEntry   : 'Sharpening'\\n        EnumEntry   : 'SensorShutterMode'\\n        EnumEntry   : 'SaturationEnable'\\n        EnumEntry   : 'Saturation'\\n        EnumEntry   : 'RgbTransformLightSource'\\n        EnumEntry   : 'ReverseY'\\n        EnumEntry   : 'ReverseX'\\n        EnumEntry   : 'PixelFormat'\\n        EnumEntry   : 'OffsetY'\\n        EnumEntry   : 'OffsetX'\\n        EnumEntry   : 'LogicBlockLUTOutputValueAllLogicBlock1Value'\\n        EnumEntry   : 'LogicBlockLUTOutputValueAllLogicBlock1Enable'\\n        EnumEntry   : 'LogicBlockLUTOutputValueAllLogicBlock0Value'\\n        EnumEntry   : 'LogicBlockLUTOutputValueAllLogicBlock0Enable'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock1Input3'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock1Input2'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock1Input1'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock1Input0'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock0Input3'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock0Input2'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock0Input1'\\n        EnumEntry   : 'LogicBlockLUTInputSourceLogicBlock0Input0'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock1Input3'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock1Input2'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock1Input1'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock1Input0'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock0Input3'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock0Input2'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock0Input1'\\n        EnumEntry   : 'LogicBlockLUTInputActivationLogicBlock0Input0'\\n        EnumEntry   : 'LineSourceLine3'\\n        EnumEntry   : 'LineSourceLine2'\\n        EnumEntry   : 'LineSourceLine1'\\n        EnumEntry   : 'LineSourceLine0'\\n        EnumEntry   : 'LineModeLine3'\\n        EnumEntry   : 'LineModeLine2'\\n        EnumEntry   : 'LineModeLine1'\\n        EnumEntry   : 'LineModeLine0'\\n        EnumEntry   : 'LineInverterLine3'\\n        EnumEntry   : 'LineInverterLine2'\\n        EnumEntry   : 'LineInverterLine1'\\n        EnumEntry   : 'LineInverterLine0'\\n        EnumEntry   : 'LineFilterWidthLine3Deglitch'\\n        EnumEntry   : 'LineFilterWidthLine3Debounce'\\n        EnumEntry   : 'LineFilterWidthLine2Deglitch'\\n        EnumEntry   : 'LineFilterWidthLine2Debounce'\\n        EnumEntry   : 'LineFilterWidthLine1Deglitch'\\n        EnumEntry   : 'LineFilterWidthLine1Debounce'\\n        EnumEntry   : 'LineFilterWidthLine0Deglitch'\\n        EnumEntry   : 'LineFilterWidthLine0Debounce'\\n        EnumEntry   : 'LUTEnable'\\n        EnumEntry   : 'IspEnable'\\n        EnumEntry   : 'Height'\\n        EnumEntry   : 'GammaEnable'\\n        EnumEntry   : 'Gamma'\\n        EnumEntry   : 'GainAuto'\\n        EnumEntry   : 'GainAll'\\n        EnumEntry   : 'FfcMode'\\n        EnumEntry   : 'FfcEnable'\\n        EnumEntry   : 'ExposureTime'\\n        EnumEntry   : 'ExposureMode'\\n        EnumEntry   : 'ExposureAuto'\\n        EnumEntry   : 'ExposureActiveMode'\\n        EnumEntry   : 'EventNotificationExposureEnd'\\n        EnumEntry   : 'EventNotificationError'\\n        EnumEntry   : 'EvCompensationRaw'\\n        EnumEntry   : 'DeviceLinkThroughputLimit'\\n        EnumEntry   : 'DeviceLinkBandwidthReserve'\\n        EnumEntry   : 'DeviceIndicatorMode'\\n        EnumEntry   : 'DefectCorrectionMode'\\n        EnumEntry   : 'DefectCorrectStaticEnable'\\n        EnumEntry   : 'DecimationVerticalAll'\\n        EnumEntry   : 'DecimationHorizontalAll'\\n        EnumEntry   : 'CounterTriggerSourceCounter1'\\n        EnumEntry   : 'CounterTriggerSourceCounter0'\\n        EnumEntry   : 'CounterTriggerActivationCounter1'\\n        EnumEntry   : 'CounterTriggerActivationCounter0'\\n        EnumEntry   : 'CounterResetSourceCounter1'\\n        EnumEntry   : 'CounterResetSourceCounter0'\\n        EnumEntry   : 'CounterResetActivationCounter1'\\n        EnumEntry   : 'CounterResetActivationCounter0'\\n        EnumEntry   : 'CounterEventSourceCounter1'\\n        EnumEntry   : 'CounterEventSourceCounter0'\\n        EnumEntry   : 'CounterEventActivationCounter1'\\n        EnumEntry   : 'CounterEventActivationCounter0'\\n        EnumEntry   : 'CounterDurationCounter1'\\n        EnumEntry   : 'CounterDurationCounter0'\\n        EnumEntry   : 'CounterDelayCounter1'\\n        EnumEntry   : 'CounterDelayCounter0'\\n        EnumEntry   : 'ColorTransformationEnable'\\n        EnumEntry   : 'ChunkModeActive'\\n        EnumEntry   : 'ChunkEnableAll'\\n        EnumEntry   : 'BlackLevelAll'\\n        EnumEntry   : 'BinningVerticalMode'\\n        EnumEntry   : 'BinningVerticalAll'\\n        EnumEntry   : 'BinningHorizontalMode'\\n        EnumEntry   : 'BinningHorizontalAll'\\n        EnumEntry   : 'BalanceWhiteAutoUpperLimit'\\n        EnumEntry   : 'BalanceWhiteAutoProfile'\\n        EnumEntry   : 'BalanceWhiteAutoLowerLimit'\\n        EnumEntry   : 'BalanceWhiteAutoDamping'\\n        EnumEntry   : 'BalanceWhiteAuto'\\n        EnumEntry   : 'BalanceRatioRed'\\n        EnumEntry   : 'BalanceRatioBlue'\\n        EnumEntry   : 'AutoExposureTargetGreyValueAuto'\\n        EnumEntry   : 'AutoExposureTargetGreyValue'\\n        EnumEntry   : 'AutoExposureMeteringMode'\\n        EnumEntry   : 'AutoExposureLightingMode'\\n        EnumEntry   : 'AutoExposureGreyValueUpperLimit'\\n        EnumEntry   : 'AutoExposureGreyValueLowerLimit'\\n        EnumEntry   : 'AutoExposureGainUpperLimit'\\n        EnumEntry   : 'AutoExposureGainLowerLimit'\\n        EnumEntry   : 'AutoExposureExposureTimeUpperLimit'\\n        EnumEntry   : 'AutoExposureExposureTimeLowerLimit'\\n        EnumEntry   : 'AutoExposureEVCompensation'\\n        EnumEntry   : 'AutoExposureControlPriority'\\n        EnumEntry   : 'AutoExposureControlLoopDamping'\\n        EnumEntry   : 'AdcBitDepth'\\n        EnumEntry   : 'AcquisitionMode'\\n        EnumEntry   : 'AcquisitionLineRate'\\n        EnumEntry   : 'AcquisitionFrameRateEnable'\\n        EnumEntry   : 'AcquisitionFrameRate'\\n        EnumEntry   : 'AcquisitionFrameCount'\\n        EnumEntry   : 'AcquisitionBurstFrameCount'\\n        EnumEntry   : 'AasRoiWidthAwb'\\n        EnumEntry   : 'AasRoiWidthAe'\\n        EnumEntry   : 'AasRoiOffsetYAwb'\\n        EnumEntry   : 'AasRoiOffsetYAe'\\n        EnumEntry   : 'AasRoiOffsetXAwb'\\n        EnumEntry   : 'AasRoiOffsetXAe'\\n        EnumEntry   : 'AasRoiHeightAwb'\\n        EnumEntry   : 'AasRoiHeightAe'\\n        EnumEntry   : 'AasRoiEnableAwb'\\n        EnumEntry   : 'AasRoiEnableAe'\\n    Boolean      : [RO] 'UserSetFeatureEnable'\\nCategory    : 'ChunkDataControl'\\n    Boolean      : [RW] 'ChunkModeActive'\\n    Enumeration  : [RW] 'ChunkSelector'\\n          * ChunkEnable\\n        EnumEntry   : 'SequencerSetActive'\\n        EnumEntry   : 'Timestamp'\\n        EnumEntry   : 'PixelFormat'\\n        EnumEntry   : 'BlackLevel'\\n        EnumEntry   : 'Gain'\\n        EnumEntry   : 'ExposureTime'\\n        EnumEntry   : 'Height'\\n        EnumEntry   : 'Width'\\n        EnumEntry   : 'OffsetY'\\n        EnumEntry   : 'OffsetX'\\n        EnumEntry   : 'FrameID'\\n        EnumEntry   : 'CRC'\\n        EnumEntry   : 'Image'\\n    Boolean      : [RW] 'ChunkEnable'\\n    Integer      : [RO] 'ChunkImage'\\n    Integer      : [RO] 'ChunkCRC'\\n    Integer      : [RO] 'ChunkFrameID'\\n    Integer      : [RO] 'ChunkOffsetX'\\n    Integer      : [RO] 'ChunkOffsetY'\\n    Integer      : [RO] 'ChunkWidth'\\n    Integer      : [RO] 'ChunkHeight'\\n    Enumeration  : [RO] 'ChunkPixelFormat'\\n        EnumEntry   : 'YCbCr601_422_8_CbYCrY'\\n        EnumEntry   : 'BayerBG8'\\n        EnumEntry   : 'BayerGB8'\\n        EnumEntry   : 'BayerRG8'\\n        EnumEntry   : 'BayerGR8'\\n        EnumEntry   : 'YUV422Packed'\\n        EnumEntry   : 'RGB8Packed'\\n        EnumEntry   : 'Mono16'\\n        EnumEntry   : 'Mono12Packed'\\n        EnumEntry   : 'Mono8'\\n    Float        : [RO] 'ChunkExposureTime'\\n    Enumeration  : [RW] 'ChunkGainSelector'\\n          * ChunkGain\\n        EnumEntry   : 'Blue'\\n        EnumEntry   : 'Green'\\n        EnumEntry   : 'Red'\\n        EnumEntry   : 'All'\\n    Float        : [RO] 'ChunkGain'\\n    Enumeration  : [RW] 'ChunkBlackLevelSelector'\\n          * ChunkBlackLevel\\n        EnumEntry   : 'All'\\n    Float        : [RO] 'ChunkBlackLevel'\\n    Integer      : [RO] 'ChunkTimestamp'\\n    Integer      : [RO] 'ChunkSequencerSetActive'\\nCategory    : 'LUTControl'\\n    Enumeration  : [RW] 'LUTSelector'\\n          * LUTEnable\\n          * LUTIndex\\n          * LUTValue\\n          * LUTValueAll\\n        EnumEntry   : 'LUT1'\\n    Boolean      : [RW] 'LUTEnable'\\n    Integer      : [RW] 'LUTIndex'\\n          * LUTValue\\n    Integer      : [RW] 'LUTValue'\\n    Register     : [RW] 'LUTValueAll'\\nCategory    : 'EventControl'\\n    Enumeration  : [RW] 'EventSelector'\\n          * EventNotification\\n        EnumEntry   : 'ExposureEnd'\\n        EnumEntry   : 'Error'\\n    Enumeration  : [RW] 'EventNotification'\\n        EnumEntry   : 'Off'\\n        EnumEntry   : 'On'\\n    Category    : 'EventExposureEndData'\\n        Integer      : [RO] 'EventExposureEnd'\\n        Integer      : [RO] 'EventExposureEndTimestamp'\\n        Integer      : [RO] 'EventExposureEndFrameID'\\n    Category    : 'EventErrorData'\\n        Integer      : [RO] 'EventError'\\n        Integer      : [RO] 'EventErrorTimestamp'\\n        Integer      : [RO] 'EventErrorFrameID'\\n        Integer      : [RO] 'EventErrorCode'\\n    Category    : 'EventTestData'\\n        Integer      : [RO] 'EventTest'\\n        Integer      : [RO] 'EventTestTimestamp'\\nCategory    : 'CounterAndTimerControl'\\n    Enumeration  : [RW] 'CounterSelector'\\n          * CounterEventSource\\n          * CounterEventActivation\\n          * CounterDuration\\n          * CounterDelay\\n          * CounterValue\\n          * CounterTriggerSource\\n          * CounterTriggerActivation\\n          * CounterResetSource\\n          * CounterResetActivation\\n          * CounterValueAtReset\\n          * CounterStatus\\n        EnumEntry   : 'Counter1'\\n        EnumEntry   : 'Counter0'\\n    Enumeration  : [RW] 'CounterEventSource'\\n        EnumEntry   : 'FrameTriggerWait'\\n        EnumEntry   : 'ExposureEnd'\\n        EnumEntry   : 'ExposureStart'\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n        EnumEntry   : 'Counter1End'\\n        EnumEntry   : 'Counter0End'\\n        EnumEntry   : 'Counter1Start'\\n        EnumEntry   : 'Counter0Start'\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line0'\\n        EnumEntry   : 'MHzTick'\\n        EnumEntry   : 'Off'\\n    Enumeration : 'CounterEventActivation' (Not available)\\n        EnumEntry   : 'AnyEdge'\\n        EnumEntry   : 'RisingEdge'\\n        EnumEntry   : 'FallingEdge'\\n        EnumEntry   : 'LevelHigh'\\n        EnumEntry   : 'LevelLow'\\n    Integer      : [RW] 'CounterDuration'\\n    Integer      : [RO] 'CounterValue'\\n    Integer     : 'CounterValueAtReset' (Not available)\\n    Enumeration  : [RW] 'CounterTriggerSource'\\n        EnumEntry   : 'FrameTriggerWait'\\n        EnumEntry   : 'ExposureEnd'\\n        EnumEntry   : 'ExposureStart'\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n        EnumEntry   : 'Counter1End'\\n        EnumEntry   : 'Counter0End'\\n        EnumEntry   : 'Counter1Start'\\n        EnumEntry   : 'Counter0Start'\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line0'\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RW] 'CounterTriggerActivation'\\n        EnumEntry   : 'AnyEdge'\\n        EnumEntry   : 'RisingEdge'\\n        EnumEntry   : 'FallingEdge'\\n        EnumEntry   : 'LevelHigh'\\n        EnumEntry   : 'LevelLow'\\n    Enumeration : 'CounterResetSource' (Not available)\\n        EnumEntry   : 'FrameTriggerWait'\\n        EnumEntry   : 'ExposureEnd'\\n        EnumEntry   : 'ExposureStart'\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n        EnumEntry   : 'Counter1End'\\n        EnumEntry   : 'Counter0End'\\n        EnumEntry   : 'Counter1Start'\\n        EnumEntry   : 'Counter0Start'\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line0'\\n        EnumEntry   : 'Off'\\n    Enumeration : 'CounterResetActivation' (Not available)\\n        EnumEntry   : 'AnyEdge'\\n        EnumEntry   : 'RisingEdge'\\n        EnumEntry   : 'FallingEdge'\\n        EnumEntry   : 'LevelHigh'\\n        EnumEntry   : 'LevelLow'\\n    Enumeration  : [RO] 'CounterStatus'\\n        EnumEntry   : 'CounterOverflow'\\n        EnumEntry   : 'CounterCompleted'\\n        EnumEntry   : 'CounterActive'\\n        EnumEntry   : 'CounterTriggerWait'\\n        EnumEntry   : 'CounterIdle'https://github.com/AravisProject/aravis\\nCategory    : 'TestControl'\\n    Integer      : [RW] 'TestPendingAck'\\n    Command      : [WO] 'TestEventGenerate'\\n    Integer      : [RW] 'Test0001'\\n    Integer      : [RO] 'GuiXmlManifestAddress'\\n    Command      : [WO] 'TriggerEventTest'\\nCategory    : 'LogicBlockControl'\\n    Enumeration  : [RW] 'LogicBlockSelector'\\n          * LogicBlockLUTSelector\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n    Enumeration  : [RW] 'LogicBlockLUTSelector'\\n          * LogicBlockLUTOutputValueAll\\n          * LogicBlockLUTInputSelector\\n          * LogicBlockLUTRowIndex\\n        EnumEntry   : 'Enable'\\n        EnumEntry   : 'Value'\\n    Enumeration  : [RW] 'LogicBlockLUTInputSelector'\\n          * LogicBlockLUTInputSource\\n          * LogicBlockLUTInputActivation\\n        EnumEntry   : 'Input2'\\n        EnumEntry   : 'Input1'\\n        EnumEntry   : 'Input0'\\n    Enumeration  : [RW] 'LogicBlockLUTInputSource'\\n        EnumEntry   : 'AcquisitionActive'\\n        EnumEntry   : 'FrameTriggerWait'\\n        EnumEntry   : 'ExposureEnd'\\n        EnumEntry   : 'ExposureStart'\\n        EnumEntry   : 'LogicBlock1'\\n        EnumEntry   : 'LogicBlock0'\\n        EnumEntry   : 'Counter1End'\\n        EnumEntry   : 'Counter0End'\\n        EnumEntry   : 'Counter1Start'\\n        EnumEntry   : 'Counter0Start'\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line0'\\n        EnumEntry   : 'Zero'\\n    Enumeration  : [RW] 'LogicBlockLUTInputActivation'\\n        EnumEntry   : 'AnyEdge'\\n        EnumEntry   : 'RisingEdge'\\n        EnumEntry   : 'FallingEdge'\\n        EnumEntry   : 'LevelHigh'\\n        EnumEntry   : 'LevelLow'\\n    Integer      : [RW] 'LogicBlockLUTOutputValueAll'\\n    Integer      : [RW] 'LogicBlockLUTRowIndex'\\n          * LogicBlockLUTOutputValue\\n    Boolean      : [RW] 'LogicBlockLUTOutputValue'\\nCategory    : 'DigitalIOControl'\\n    Enumeration  : [RW] 'LineSelector'\\n          * LineMode\\n          * V3_3Enable\\n          * LineInverter\\n          * LineStatus\\n          * LineInputFilterSelector\\n          * LineSource\\n          * LineFormat\\n        EnumEntry   : 'Line3'\\n        EnumEntry   : 'Line2'\\n        EnumEntry   : 'Line1'\\n        EnumEntry   : 'Line0'\\n    Enumeration  : [RW] 'LineMode'\\n        EnumEntry   : 'Input'\\n    Boolean     : 'V3_3Enable' (Not available)\\n    Boolean      : [RW] 'LineInverter'\\n    Boolean      : [RO] 'LineStatus'\\n    Integer      : [RO] 'LineStatusAll'\\n    Enumeration  : [RW] 'LineInputFilterSelector'\\n          * LineFilterWidth\\n        EnumEntry   : 'Debounce'\\n        EnumEntry   : 'Deglitch'\\n    Float        : [RW] 'LineFilterWidth'\\n    Enumeration  : [RW] 'LineSource'\\n        EnumEntry   : 'Off'\\n    Enumeration  : [RO] 'LineFormat'\\n        EnumEntry   : 'OpenDrain' (Not available)\\n        EnumEntry   : 'OptoCoupled'\\n        EnumEntry   : 'TriState' (Not available)\\n        EnumEntry   : 'NoConnect' (Not available)\\n    Enumeration  : [RW] 'UserOutputSelector'\\n          * UserOutputValue\\n        EnumEntry   : 'UserOutput3'\\n        EnumEntry   : 'UserOutput2'\\n        EnumEntry   : 'UserOutput1'\\n        EnumEntry   : 'UserOutput0'\\n    Boolean      : [RW] 'UserOutputValue'\\n    Integer      : [RW] 'UserOutputValueAll'\\nCategory    : 'FileAccessControl'\\n    Enumeration  : [RW] 'FileSelector'\\n          * FileOperationSelector_Val\\n          * FileOpenMode_Val\\n          * FileSize_Val\\n        EnumEntry   : 'UserFile1'\\n        EnumEntry   : 'UserSet1'\\n        EnumEntry   : 'UserSet0'\\n        EnumEntry   : 'UserSetDefault'\\n    Enumeration  : [RW] 'FileOperationSelector'\\n          * FileOperationExecute_Val\\n          * FileAccessOffset_Val\\n          * FileAccessLength_Val\\n          * FileOperationStatus_Val\\n          * FileOperationResult_Val\\n        EnumEntry   : 'Delete'\\n        EnumEntry   : 'Write'\\n        EnumEntry   : 'Read'\\n        EnumEntry   : 'Close'\\n        EnumEntry   : 'Open'\\n    Command      : [WO] 'FileOperationExecute'\\n    Enumeration  : [RW] 'FileOpenMode'\\n        EnumEntry   : 'ReadWrite'\\n        EnumEntry   : 'Write'\\n        EnumEntry   : 'Read'\\n    Register     : [RW] 'FileAccessBuffer'\\n    Integer      : [RW] 'FileAccessOffset'\\n    Integer      : [RW] 'FileAccessLength'\\n    Enumeration  : [RO] 'FileOperationStatus'\\n        EnumEntry   : 'Failure'\\n        EnumEntry   : 'Success'\\n    Integer      : [RO] 'FileOperationResult'\\n    Integer      : [RO] 'FileSize'\\nCategory    : 'TransferControl'\\n    Enumeration  : [RW] 'TransferControlMode'\\n        EnumEntry   : 'UserControlled'\\n        EnumEntry   : 'Automatic'\\n        EnumEntry   : 'Basic'\\n    Enumeration : 'TransferOperationMode' (Not available)\\n        EnumEntry   : 'MultiBlock' (Not available)\\n        EnumEntry   : 'Continuous'\\n    Integer     : 'TransferBlockCount' (Not available)\\n    Integer      : [RO] 'TransferQueueMaxBlockCount'\\n    Integer      : [RO] 'TransferQueueCurrentBlockCount'\\n    Integer      : [RO] 'TransferQueueOverflowCount'\\n    Enumeration : 'TransferQueueMode' (Not available)\\n        EnumEntry   : 'FirstInFirstOut'\\n    Command     : 'TransferStart' (Not available)\\n    Command     : 'TransferStop' (Not available)\\n\\n\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#cameras","title":"Cameras"}]},"frontmatter":{"section":"System","chapter":"Subsystems","title":"Input","description":"How inputs are handled in the NUbots codebase.","keywords":null,"slug":"/system/subsystems/input","hidden":null},"childNUbookContributions":{"authors":[{"name":"Ysobel Sims","username":"ysims"},{"name":"Liam Craft","username":"Crafty15"}],"lastCommit":{"date":"2025-10-03T12:17:39.000Z","hash":"38438c1e07ecdf3278fc2686114980108548bf85"}}}},"pageContext":{"mdxPath":"src/book/02-system/02-subsystems/01-input.mdx","id":"50052e48-c453-53fe-9350-2f91895af39d","next":{"chapter":"Subsystems","title":"Odometry","description":"Odometry and how it works in the NUbots codebase.","slug":"/system/subsystems/odometry","hidden":null},"previous":{"chapter":"Foundations","title":"Director","description":"Introduction to the Director and how to use it to build behaviours.","slug":"/system/foundations/director","hidden":null},"menu":[{"title":"Team","slug":"/team/introduction","chapters":[{"title":"Introduction","slug":"/team/introduction","pages":[{"title":"Introduction to NUbots","slug":"/team/introduction","hidden":null},{"title":"Areas of Research","slug":"/team/areas-of-research","hidden":null},{"title":"Current Team","slug":"/team/current-members","hidden":null}],"hidden":false},{"title":"Joining the Team","slug":"/team/how-we-work","pages":[{"title":"How We Work","slug":"/team/how-we-work","hidden":null},{"title":"How to Join NUbots","slug":"/team/how-to-join","hidden":null},{"title":"Lab Induction","slug":"/team/induction","hidden":null}],"hidden":false},{"title":"Community","slug":"/team/sponsors","pages":[{"title":"Sponsors","slug":"/team/sponsors","hidden":null},{"title":"Connect","slug":"/team/connect","hidden":null}],"hidden":false},{"title":"History","slug":"/team/history","pages":[{"title":"Team History","slug":"/team/history","hidden":null},{"title":"Past Members","slug":"/team/past-members","hidden":null},{"title":"Publications","slug":"/team/publications","hidden":null}],"hidden":false},{"title":"RoboCup","slug":"/team/robocup","pages":[{"title":"RoboCup","slug":"/team/robocup","hidden":null},{"title":"Resources","slug":"/team/robocup/resources","hidden":null},{"title":"Debriefs","slug":"/team/robocup/debriefs","hidden":null}],"hidden":false}],"hidden":false},{"title":"System","slug":"/system/foundations/overview","chapters":[{"title":"Foundations","slug":"/system/foundations/overview","pages":[{"title":"Overview","slug":"/system/foundations/overview","hidden":null},{"title":"Build System","slug":"/system/foundations/build-system","hidden":null},{"title":"Continuous Integration","slug":"/system/foundations/ci-system","hidden":null},{"title":"NUClear","slug":"/system/foundations/nuclear","hidden":null},{"title":"Mathematics","slug":"/system/foundations/mathematics","hidden":null},{"title":"Configuration and Script System","slug":"/system/foundations/config-script","hidden":null},{"title":"Director","slug":"/system/foundations/director","hidden":null}],"hidden":false},{"title":"Subsystems","slug":"/system/subsystems/input","pages":[{"title":"Input","slug":"/system/subsystems/input","hidden":null},{"title":"Odometry","slug":"/system/subsystems/odometry","hidden":null},{"title":"Localisation","slug":"/system/subsystems/localisation","hidden":null},{"title":"Motion","slug":"/system/subsystems/motion","hidden":null},{"title":"Vision","slug":"/system/subsystems/vision","hidden":null},{"title":"Behaviour","slug":"/system/subsystems/behaviour","hidden":null},{"title":"Logging","slug":"/system/subsystems/logging","hidden":null}],"hidden":false},{"title":"Tools","slug":"/system/tools/nusight","pages":[{"title":"NUsight","slug":"/system/tools/nusight","hidden":null},{"title":"NUbook","slug":"/system/tools/nubook","hidden":null},{"title":"NUpbr","slug":"/system/tools/nupbr","hidden":null},{"title":"NUgan","slug":"/system/tools/nugan","hidden":null},{"title":"System Configuration","slug":"/system/tools/system_configuration","hidden":null},{"title":"NatNet SDK","slug":"/system/tools/natnet_sdk","hidden":null}],"hidden":false},{"title":"Hardware","slug":"/system/hardware/overview","pages":[{"title":"Overview and Specifications","slug":"/system/hardware/overview","hidden":null}],"hidden":false},{"title":"Modules","slug":"/system/modules/actuation/","pages":[{"title":"Actuation","slug":"/system/modules/actuation/","hidden":null},{"title":"Extension","slug":"/system/modules/extension/","hidden":null},{"title":"Input","slug":"/system/modules/input/","hidden":null},{"title":"Localisation","slug":"/system/modules/localisation/","hidden":null},{"title":"Nbs","slug":"/system/modules/nbs/","hidden":null},{"title":"Network","slug":"/system/modules/network/","hidden":null},{"title":"Output","slug":"/system/modules/output/","hidden":null},{"title":"Planning","slug":"/system/modules/planning/","hidden":null},{"title":"Platform","slug":"/system/modules/platform/","hidden":null},{"title":"Purpose","slug":"/system/modules/purpose/","hidden":null},{"title":"Skill","slug":"/system/modules/skill/","hidden":null},{"title":"Strategy","slug":"/system/modules/strategy/","hidden":null},{"title":"Support","slug":"/system/modules/support/","hidden":null},{"title":"Tools","slug":"/system/modules/tools/","hidden":null},{"title":"Vision","slug":"/system/modules/vision/","hidden":null}],"hidden":false}],"hidden":false},{"title":"Guides","slug":"/guides/main/getting-started","chapters":[{"title":"Main Codebase","slug":"/guides/main/getting-started","pages":[{"title":"Getting Started","slug":"/guides/main/getting-started","hidden":null},{"title":"NUClear","slug":"/guides/main/nuclear-tutorial","hidden":null},{"title":"Running and Tuning Scripts","slug":"/guides/main/tuning-and-running-scripts","hidden":null},{"title":"Maintaining Subsystems","slug":"/guides/main/maintaining-subsystems","hidden":null},{"title":"Data Recording and Playback","slug":"/guides/main/data-recording-playback","hidden":null},{"title":"Camera Calibration","slug":"/guides/main/camera-calibration","hidden":null},{"title":"Onboarding Workshop","slug":"/guides/main/onboarding","hidden":null}],"hidden":false},{"title":"Tools","slug":"/guides/tools/nusight-contribution","pages":[{"title":"Contributing to NUsight","slug":"/guides/tools/nusight-contribution","hidden":null},{"title":"Setting Up Webots","slug":"/guides/tools/webots-setup","hidden":null},{"title":"Visual Mesh Getting Started","slug":"/guides/tools/visualmesh","hidden":null},{"title":"Using NUpbr","slug":"/guides/tools/nupbr-guide","hidden":null},{"title":"GameController Setup","slug":"/guides/tools/gamecontroller","hidden":null}],"hidden":false},{"title":"Hardware","slug":"/guides/hardware/working-with-robots","pages":[{"title":"Working with Robots","slug":"/guides/hardware/working-with-robots","hidden":null},{"title":"Flashing a Robot","slug":"/guides/hardware/flashing","hidden":null},{"title":"Servo Setup and Calibration","slug":"/guides/hardware/servo-calibration","hidden":null},{"title":"Batteries","slug":"/guides/hardware/batteries","hidden":null},{"title":"DARwIn Op2 Robot Restoration and Calibration Guide","slug":"/guides/hardware/darwin-op2-guide","hidden":null}],"hidden":false},{"title":"General","slug":"/guides/general/learning-resources","pages":[{"title":"Learning Resources","slug":"/guides/general/learning-resources","hidden":null},{"title":"Contribution Workflow","slug":"/guides/general/contribute","hidden":null},{"title":"RoboCup Setup","slug":"/guides/general/robocup-setup","hidden":null},{"title":"Troubleshooting","slug":"/guides/general/troubleshooting","hidden":null},{"title":"Code Conventions","slug":"/guides/general/code-conventions","hidden":null},{"title":"Glossary","slug":"/guides/general/glossary","hidden":null}],"hidden":false}],"hidden":false},{"title":"Kitchen Sink","slug":"/kitchen-sink/headers","chapters":[{"title":"Markdown","slug":"/kitchen-sink/headers","pages":[{"title":"Headers","slug":"/kitchen-sink/headers","hidden":true},{"title":"Formatting and Paragraphs","slug":"/kitchen-sink/formatting-and-paragraphs","hidden":true},{"title":"Blockquotes","slug":"/kitchen-sink/blockquotes","hidden":true},{"title":"Alerts","slug":"/kitchen-sink/alerts","hidden":true},{"title":"Images","slug":"/kitchen-sink/images","hidden":true},{"title":"Lists","slug":"/kitchen-sink/lists","hidden":true},{"title":"Code","slug":"/kitchen-sink/code","hidden":true},{"title":"Math","slug":"/kitchen-sink/math","hidden":true},{"title":"Table of Contents","slug":"/kitchen-sink/table-of-contents","hidden":true},{"title":"Tables","slug":"/kitchen-sink/tables","hidden":true},{"title":"Collapsible Content","slug":"/kitchen-sink/collapsible","hidden":true},{"title":"GraphViz Diagrams","slug":"/kitchen-sink/graphviz-diagrams","hidden":true},{"title":"Referencing","slug":"/kitchen-sink/referencing","hidden":true}],"hidden":true}],"hidden":true}],"references":null,"hidden":null}},
    "staticQueryHashes": ["3715292327","445096115","466146812"]}