diff --git a/CONFIG_LOCATIONS.md b/CONFIG_LOCATIONS.md new file mode 100644 index 0000000..2f34b02 --- /dev/null +++ b/CONFIG_LOCATIONS.md @@ -0,0 +1,474 @@ +# JiboOS V3.1 – Config locations inventory (for SSH tooling) + +This workspace is a filesystem tree under `build/`. Most paths below are **absolute paths as they exist on the robot**. + +If you’re using this repo as a staging image, the mapping is: + +- Workspace path: `build/` +- Robot path: `` + +Example: `build/usr/local/etc/jibo-jetstream-service.json` corresponds to `/usr/local/etc/jibo-jetstream-service.json` on-robot. + +--- + +## Highest-level “what runs what” + +### `/usr/local/etc/jibo-system-manager.json` + +**Purpose:** Master orchestrator config. Defines the service startup order, executables, arguments (including which `-c /usr/local/etc/.json` is used), environment variables, and some device-level settings. + +**Why your tooling should care:** if you need to know **which process** consumes a config file, this is the authoritative mapping. + +Notable sections: + +- `SystemManager.service.services[]` + - `name`, `executable`, `modes..arguments` (usually includes the config file path) + - `modes..enabled` (turn a service on/off per mode) +- `SystemManager.skills.environment` + - `JIBO_HUB_SHIM_HOST` (host/port target for the hub shim) + - `JIBO_GQA_ENDPOINT` (HTTP endpoint used by the optional GQA shim) +- `credentials.path`: `/var/jibo/credentials.json` (runtime config; controls region selection in Jetstream) +- `wifi.*` (wpa_supplicant + DHCP client options) +- `time.*` (timezone/localtime paths and NTP sync) + +**Apply/restart:** system-manager itself (how depends on your init/systemd on the robot). Most changes only take effect on service restart or reboot. + +--- + +## Core robot service configs (`/usr/local/etc/*.json`) + +These are the main knobs for the robot’s built-in services. Many follow this pattern: + +- `WebCore.serverPort`: HTTP port for the service +- `.registryPort`: service registry port (usually `8181`) +- `logging.*`: log levels / syslog routing + +### `/usr/local/etc/jibo-service-registry.json` + +**Purpose:** Service registry / management web endpoints. + +- Ports: `8181` (`WebCore.serverPort`, `ServiceRegistry.registryPort`) + +**Apply/restart:** restart `jibo-service-registry`. + +### `/usr/local/etc/jibo-jetstream-service.json` + +**Purpose:** Jetstream (hub client + streaming audio + wakeword/ASR pipeline glue). + +Key knobs: + +- `HubClient.override`: where Jetstream sends `/v1/listen` and friends. + - `hub_hostname`, `hub_port` + - Use this to point Jetstream to a **local or server-hosted hub shim**. +- `HubClient.listen_language` +- `HubClient.encoding_type` + `encoding-settings`: `OGG_OPUS` / `FLAC` settings +- `RecogHJ`, `HubAsr`: timing for SOS/EOS and max speech timeouts + +**Apply/restart:** restart `jibo-jetstream-service`. + +### `/usr/local/etc/jibo-asr-service.json` + +**Purpose:** On-robot ASR service (WebSocket event stream + HTTP start/stop), logging, cloud/local STT selection. + +Key knobs: + +- `webCore.serverPort`: `8088` +- `AsrService.language` +- `AsrService.log_audio`, `log_text`, `log_path`, upload intervals/thresholds +- `AsrService.resident_task` / `resident_audio_channel`: default always-on hotphrase task (e.g. `audio_source_id":"alsa1"`) +- `AsrService.task_templates`: defines ASR pipelines + +**Apply/restart:** restart `jibo-asr-service`. + +Note: this file contains cloud credentials/keys in this build tree. Treat it as sensitive in your tooling (avoid echoing it into logs). + +### `/usr/local/etc/jibo-tts-service.json` + +**Purpose:** On-robot TTS voice + audio output. + +Key knobs: + +- `webCore.serverPort`: `8089` +- `TTSService.resourcePath`: voice resources +- `TTSService.alsaPlaybackDevice`: playback routing +- `voiceParams.*`: speed, volume, max chars, etc. + +**Apply/restart:** restart `jibo-tts-service`. + +### `/usr/local/etc/jibo-nlu-service.json` + +**Purpose:** NLU service (local grammar/model parsing). + +Key knobs: + +- `webCore.serverPort`: `8787` +- `Service.nlu_data_dir`: NLU model data +- `Service.default_locale` + +**Apply/restart:** restart `jibo-nlu-service`. + +### `/usr/local/etc/jibo-audio-service.json` + +**Purpose:** Audio routing/capture/playback device selection and audio processing thresholds. + +Key knobs: + +- `WebCore.serverPort`: `8383` +- `AudioService.alsaCaptureDevice`, `alsaPlaybackDevice` +- `AudioService.router*` latencies +- `AudioService.kinematic_model`: points to `/usr/local/etc/jibo-kinematic-model.json` + +**Apply/restart:** restart `jibo-audio-service`. + +### `/usr/local/etc/jibo-body-service.json` + +**Purpose:** Low-level body control: serial devices, offsets, limits, battery thresholds, IMU calibration path. + +Key knobs: + +- `WebCore.serverPort`: `8282` +- `bodyBoard.*`: `/dev/ttyTHS0/1` devices, offsets, flipped flags, accel/vel limits +- `imu.driver.calibrationFile`: `/var/jibo/imu/imu-cal.json` (runtime file) +- `BodyService.kinematic_model`: points to `/usr/local/etc/jibo-kinematic-model.json` + +**Apply/restart:** restart `jibo-body-service`. + +### `/usr/local/etc/jibo-kinematic-model.json` + +**Purpose:** Robot kinematic model (frame transforms, masses, inertias). Used by audio/body/LPS. + +**Apply/restart:** restart consumers (at least `jibo-body-service`, `jibo-audio-service`, and `jibo-lps-service`). + +### `/usr/local/etc/jibo-media-service.json` + +**Purpose:** Media service camera configuration (CUDA/V4L2 device paths, capture params). + +Key knobs: + +- `WebCore.serverPort`: `7979` +- `MediaService.camera.*`: `/dev/video0`, `/dev/video1`, flips, AE/AWB tuning + +**Apply/restart:** restart `jibo-media-service`. + +### `/usr/local/etc/jibo-lps-service.json` + +**Purpose:** LPS (Local Perception System) + internal media subsystem + visual awareness pipeline. + +Key knobs: + +- `WebCoreLPS.serverPort`: `8484` +- `CaptureSubsystem.camera_config_file`: `/usr/local/etc/lps/cameras.json` +- `EngineSubsystem.schemas.*`: `/usr/local/etc/lps/schemas/{normal,focused,minimal}.json` +- `EngineSubsystem.engine.state.entity_config_file`: `/usr/local/etc/lps/entityConfig.json` +- `EngineSubsystem.engine.state.geometry.*`: camera model params in `/var/jibo/lps/*.json` (runtime files) + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/lps/cameras.json` + +**Purpose:** Camera device list + CUDA capture config + controls presets. + +**Apply/restart:** restart `jibo-lps-service` (and anything using the same capture stack). + +### `/usr/local/etc/lps/entityConfig.json` + +**Purpose:** Entity tracking parameters (people/head tracking, confidence thresholds, trackers, etc.). + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/lps/schemas/normal.json` +### `/usr/local/etc/lps/schemas/focused.json` +### `/usr/local/etc/lps/schemas/minimal.json` + +**Purpose:** LPS “schema” graphs: which detectors/actions run and at what cadence. + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/jibo-identity-service.json` + +**Purpose:** Identity/face recognition engine + model paths. + +Key knobs: + +- `WebCore.serverPort`: `8489` +- `IdentityService.engine.identifier.*`: choose identifier type (deepid/eigenfaces/resnetfaceid) and model paths +- Storage path: `/var/jibo/identity/*` (runtime) + +**Apply/restart:** restart `jibo-identity-service`. + +### `/usr/local/etc/jibo-server-service.json` + +**Purpose:** Cloud/server connection service + notifications. + +- `WebCore.serverPort`: `8888` +- `NotificationSubsystem.serverURLSuffix` + +**Apply/restart:** restart `jibo-server-service`. + +### `/usr/local/etc/jibo-service-center-service.json` + +**Purpose:** Service-center web UI/service. + +- `WebCore.serverPort`: `9797` + +**Apply/restart:** restart `jibo-service-center-service`. + +### `/usr/local/etc/jibo-certification-service.json` + +**Purpose:** Certification service. + +- `WebCore.serverPort`: `9292` + +**Apply/restart:** restart `jibo-certification-service`. + +### `/usr/local/etc/jibo-system-monitoring-service.json` + +**Purpose:** System health/storage monitoring + health log upload. + +Key knobs: + +- `WebCore.serverPort`: `4111` +- `SystemMonitoringService.storage.semantic`: path aliases used for reporting +- `health.upload.arguments`: uses `/var/jibo/credentials.json` (runtime) + +**Apply/restart:** restart `jibo-system-monitoring-service`. + +### `/usr/local/etc/jibo-test-capture-service.json` + +**Purpose:** Camera capture tools service (debug/QA). + +- `WebCore.serverPort`: `7979` (note: overlaps with `jibo-media-service.json` in this tree; only one should bind a given port at runtime) + +**Apply/restart:** restart `jibo-test-capture-service`. + +### `/usr/local/etc/jibo-test-capture.json` + +**Purpose:** Test capture tool runtime behavior (recording toggles, lock counts, display/profiler options). + +**Apply/restart:** whatever tool/runner loads it (not a standard service config; used by capture tooling). + +### `/usr/local/etc/jibo-camera-calibrator.json` + +**Purpose:** Camera calibration workflow + capture device selection. Writes calibration outputs into `/var/jibo/lps`. + +**Apply/restart:** used by the calibrator tool; changes apply on next run. + +### `/usr/local/etc/jibo-hub-shim.json` + +**Purpose:** Robot-local hub shim config (for running the shim on the robot). + +Key knobs: + +- `listen.*`: bind/port/path for `/v1/listen` +- `asrService.baseUrl`: typically `http://127.0.0.1:8088` on-robot + +**Apply/restart:** restart the hub-shim process (not a core Jibo service; depends on your deployment). + +### `/usr/local/etc/jibo-sts.json` + +**Purpose:** Placeholder config for secure-transfer (STS). In this tree it is currently empty. + +**Apply/restart:** N/A (service may use defaults or other config sources). + +--- + +## SSM / robot “mode” configuration (`/usr/local/etc/jibo-ssm/*.json`) + +These files configure the Node-based SSM (service supervisor/skill launcher) and its ports per robot mode. + +- `/usr/local/etc/jibo-ssm/jibo-ssm-normal.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-oobe.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-developer.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json` + +Common knobs: + +- `services.SkillsService.port` (HTTP port; typically `8779`) +- `services.DevShell.*` (developer ports: `8686/8989/9191`) (developer/int-developer) +- `services.WifiService.region` (e.g. `api`) +- `RegistryClient.host/port` (usually `127.0.0.1:8181`) +- `logging.namespaces` (fine-grained log routing) + +**Apply/restart:** restart SSM / the Node process that loads these configs. + +--- + +## Hub shim (server-hosted) config + +This is for the PC/server side shim that emulates the hub `/v1/listen` endpoint. + +Workspace source: + +- `hub-shim/config.example.json` (template) +- `hub-shim/config.json` (local dev) +- `hub-shim/systemd/jibo-hub-shim.service` (service unit) +- `hub-shim/systemd/jibo-hub-shim.env.example` (env file template) + +Server install locations (created by `hub-shim/install-server.sh`): + +- `/opt/jibo-hub-shim/` (code) +- `/etc/jibo-hub-shim/config.json` (config) +- `/etc/jibo-hub-shim/jibo-hub-shim.env` (sets `JIBO_HUB_SHIM_CONFIG=/etc/jibo-hub-shim/config.json`) +- `/etc/systemd/system/jibo-hub-shim.service` + +Key knobs in the shim config JSON: + +- `listen.bindHost`, `listen.port`, `listen.path` +- `asrService.baseUrl`: robot ASR base URL (e.g. `http://:8088` if shim runs off-robot) +- `asrService.audioSourceId`: commonly `alsa1` on-robot +- `asrService.timeoutMs` +- `gqaShim.enabled` + `gqaShim.ollama.*`: optional Ollama-backed “GQA shim” HTTP service + +**Apply/restart:** `systemctl restart jibo-hub-shim` (server). For local dev: restart `node index.js ./config.json`. + +--- + +## AI bridge (PC-side) configuration + +### PC server (Python) + +- `ai_bridge_server/server.py` + +Config sources: + +- CLI args: `--host`, `--port` (default run example uses `0.0.0.0:8020`) +- Env vars: + - `OLLAMA_URL` (default `http://127.0.0.1:11434/api/chat`) + - `OLLAMA_MODEL` (default `phi3.5`) + - `WHISPER_MODEL` (default `base`) (audio endpoint only) + +**Apply/restart:** restart the Python process. + +### Robot-side AI bridge client config + +- `/opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json` + +Key knobs: + +- `enabled` +- `mode`: `TEXT` or `AUDIO` +- `serverBaseUrl`: your PC’s bridge server URL (e.g. `http://:8020`) +- ASR integration: + - `useAsrServiceStt`, `asrServiceHost`, `asrServicePort`, `asrAudioSourceId`, `asrTimeoutMs`, `asrAutoStart` +- Behavior: + - `wakeupChitchatPhrases[]` + - `followupEnabled`, `followupDelayMs` + - `aiForwardingAllowedSkills[]` gating + +**Apply/restart:** restart the SkillsService / BE skill (or reboot). + +Related dev-only override: + +- `/opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json` (local-run ASR config variant) + +--- + +## Skills menu / content configs (skill-layer “settings”) + +These are not OS-level services, but they are **configuration surfaces** for skill UI/menu behavior. + +- `/opt/jibo/Jibo/Skills/@be/menu-entries.d/*.json` + - Defines top-level menu entries/submenus (e.g. `childrenDir` points at a skill folder containing `menuEntry.json`). +- `/opt/jibo/Jibo/Skills/*/menuEntry.json` + - Declares skill menu metadata (title/hidden/etc.). +- `/opt/jibo/Jibo/Skills/@be/be/menu/menus/*.json` + - Defines button menus (labels/icons/utterances + hit area polygon). + +**Apply/restart:** restart SkillsService / reload the menu skill. + +--- + +## Init scripts and env-tunable configs (`/etc/init.d/*`) + +These scripts are often the real place where **ports and file paths** are chosen, via environment variables. + +### `/etc/init.d/S04jibo-asr-service` + +- Launches: `/usr/local/bin/jibo-asr-service -c /usr/local/etc/jibo-asr-service.json` +- PID file: `/var/run/jibo-asr-service.pid` +- Log: `/tmp/jibo-asr-service.log` + +### `/etc/init.d/S02jibo-skills-logd` + +Skills UDP log daemon. + +Env vars: + +- `JIBO_LOGD_HOST` (default `127.0.0.1`) +- `JIBO_LOGD_PORT` (default `15140`) +- `JIBO_LOGD_FILE` (default `/tmp/jibo-skills.log`) + +### `/etc/init.d/S03jibo-skills-logpanel` + +Skills web log panel. + +Env vars: + +- `JIBO_LOGPANEL_BIND` (default `0.0.0.0`) +- `JIBO_LOGPANEL_PORT` (default `15150`) +- `JIBO_LOGD_FILE` (shared logfile path) + +### `/etc/init.d/S21firewall` + +Firewall rules (iptables). Not JSON, but it is a major “settings surface”. + +- Always allows SSH port `22` +- Also explicitly allows SkillsService panel `8779` and log panel `15150` +- Opens additional ports based on the current mode via `/usr/bin/jibo-getmode` + +**Apply:** run the init script (restart) or reboot. + +--- + +## Runtime-created or runtime-edited config files (referenced by the above) + +These are not present in this build tree, but the services above reference them. Your SSH tooling will often want to read/edit these too. + +- `/var/jibo/credentials.json` + - Used for: Jetstream `region-settings` selection; system health upload credentials. +- `/var/jibo/imu/imu-cal.json` + - Used for: BodyService IMU calibration. +- `/var/jibo/lps/CameraModelParamsL.json` +- `/var/jibo/lps/CameraModelParamsR.json` +- `/var/jibo/lps/InterCameraTransform.json` + - Used for: LPS geometry. +- `/var/etc/timezone`, `/var/etc/localtime` + - Used for: system timezone. + +--- + +## Quick port index (useful for “is my edit live?” checks) + +From configs in this tree: + +- Service registry: `8181` +- Body: `8282` +- Audio: `8383` +- Jetstream: `8090` +- ASR: `8088` +- TTS: `8089` +- NLU: `8787` +- Identity: `8489` +- LPS: `8484` (and internal media `8486`) +- Media: `7979` +- Server service: `8888` +- System manager: `8585` +- System monitoring: `4111` +- Service center: `9797` +- Certification: `9292` +- Skills service: `8779` (SSM) +- Skills logd: UDP `15140` +- Skills log panel: `15150` +- Hub shim (this project): `9000` (server-side shim) +- AI bridge server (PC): `8020` + +--- + +## Suggested conventions for your editor tool + +- Always read/parse JSON with comment tolerance disabled (these are strict JSON files). +- Treat these keys as “high risk” and avoid accidentally printing them: + - Anything containing `appkey`, `key`, `credential`, `password`, `token`. +- After edits: + - Restart only the owning service (see sections above). + - Prefer `system-manager` / SSM restart only when necessary. diff --git a/CONFIG_VALUES.md b/CONFIG_VALUES.md new file mode 100644 index 0000000..142a903 --- /dev/null +++ b/CONFIG_VALUES.md @@ -0,0 +1,3334 @@ +# JiboOS V3.1 – Config values (expanded) + +This file expands the config inventory by listing **every leaf setting** found in each JSON config, in the form: + +- `path = value (type)` + +Notes: + +- Paths use dot-notation for objects and `[index]` for arrays. +- Long values are truncated to keep this readable (your tooling should read the original JSON when editing). +- Robot paths are shown (derived from this build tree). + +--- + +## JSON configs + +### /hub-shim/config.example.json + +Source in this workspace: `hub-shim/config.example.json` + +```text +asrService.audioSourceId = "alsa1" (string) +asrService.baseUrl = "http://192.168.1.15:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +gqaShim.bindHost = "0.0.0.0" (string) +gqaShim.enabled = false (bool) +gqaShim.ollama.baseUrl = "http://127.0.0.1:11434" (string) +gqaShim.ollama.model = "phi3.5" (string) +gqaShim.ollama.systemPrompt = "You are Jibo, a friendly social robot. Reply in 1-2 short spoken sentences." (string) +gqaShim.port = 8080 (int) +gqaShim.timeoutMs = 20000 (int) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /hub-shim/config.json + +Source in this workspace: `hub-shim/config.json` + +```text +asrService.baseUrl = "http://192.168.1.15:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +gqaShim.bindHost = "0.0.0.0" (string) +gqaShim.enabled = true (bool) +gqaShim.ollama.baseUrl = "http://127.0.0.1:11434" (string) +gqaShim.ollama.model = "phi3.5" (string) +gqaShim.ollama.systemPrompt = "You are Jibo, a friendly social robot. Reply in 1-2 short spoken sentences." (string) +gqaShim.port = 8080 (int) +gqaShim.timeoutMs = 20000 (int) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json` + +```text +aiForwardingAllowedSkills[0] = "@be/main-menu" (string) +aiForwardingAllowedSkills[1] = "@be/idle" (string) +aiForwardingOnlyAllowedSkills = true (bool) +asrAudioSourceId = "alsa1" (string) +asrAutoStart = true (bool) +asrServiceDebugWs = false (bool) +asrServiceHost = "127.0.0.1" (string) +asrServicePort = 8088 (int) +asrTimeoutMs = 15000 (int) +enabled = true (bool) +followupDelayMs = 250 (int) +followupEnabled = true (bool) +jetstreamInjectOnHjHeard = true (bool) +jetstreamOfflineFallbackEnabled = true (bool) +mode = "TEXT" (string) +recordSeconds = 5 (int) +serverBaseUrl = "http://192.168.1.28:8020" (string) +suppressWakeGreetings = true (bool) +useAsrServiceStt = true (bool) +useDumpStateAudio = true (bool) +wakeupChitchatPhrases[0] = "hello" (string) +wakeupChitchatPhrases[1] = "howdy" (string) +wakeupChitchatPhrases[2] = "hi" (string) +wakeupChitchatPhrases[3] = "hey" (string) +wakeupChitchatPhrases[4] = "look what i found" (string) +wakeupChitchatPhrases[5] = "nice to see you" (string) +wakeupChitchatPhrases[6] = "good morning" (string) +wakeupChitchatPhrases[7] = "good afternoon" (string) +wakeupChitchatPhrases[8] = "good evening" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json` + +```text +AsrService.active_sleep_duration = 5000 (int) +AsrService.asr_resource_path = "/usr/local/share/asr/" (string) +AsrService.audio_loop_sleep_us = 10000 (int) +AsrService.block_duration = 50 (int) +AsrService.cloud_appid = "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503" (string) +AsrService.cloud_appkey = "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b" (string) +AsrService.cloud_establish_http_timeout = 5000 (int) +AsrService.cloud_url = "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/" (string) +AsrService.contacts_checksum = "" (string) +AsrService.customs_checksum = "" (string) +AsrService.dictation_type = "dictation" (string) +AsrService.fadeout_duration = 5000000 (int) +AsrService.google_credential = "/usr/local/share/asr/google_asr/credentials-key.json" (string) +AsrService.idle_sleep_duration = 50000 (int) +AsrService.language = "en-US" (string) +AsrService.log_audio = true (bool) +AsrService.log_level = "INFO" (string) +AsrService.log_path = "/var/log/asr" (string) +AsrService.log_server_url = "https://speech-logging.jibo.com/logdrop/logdrop.py" (string) +AsrService.log_text = true (bool) +AsrService.log_upload_time_interval = 60000 (int) +AsrService.loop_checksum = "1" (string) +AsrService.max_asr_log_dir_size = 12000 (int) +AsrService.max_asr_log_dir_size_before_upload_trigger = 10000 (int) +AsrService.max_logfile_size = 1000 (int) +AsrService.max_memory = 150000 (int) +AsrService.min_available_log_partition_space = 5000 (int) +AsrService.name_learning_nbest = 70 (int) +AsrService.name_learning_resource_path = "/usr/local/share/asr/namelearning" (string) +AsrService.name_learning_temp_path = "/var/jibo/asr/namelearning_temp/" (string) +AsrService.nuance_uId = "b8fb02f2c5794963aaafb8c716ef384c" (string) +AsrService.post_to_performance_service = true (bool) +AsrService.resident_audio_channel = "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}" (string) +AsrService.resident_task = "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}" (string) +AsrService.rewrite_rules.log_audio_no_trigger = "^(?!.*?hey_jibo)(.*)->{\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":300, \"audio_overshoot_duration\":0,\"prebuffer\":false} | ($1)" (string) +AsrService.rewrite_rules.namelearning_EOS = "^(.*?\"name\":\\s*name_learning.*)->{\"name\":\"jibo_energy_eos\",\"path\":\"/usr/local/share/asr/jibo_energy_eos\",\"timeout\":10000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremen... (string) +AsrService.size_to_free_up_when_dir_overflowing = 1000 (int) +AsrService.speaker_id_resource_path = "/var/jibo/asr/" (string) +AsrService.task_templates.cloud.emitting_recogs[0] = "google_asr" (string) +AsrService.task_templates.cloud.emitting_recogs[1] = "sensory_sdet" (string) +AsrService.task_templates.cloud.input_template = "({\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"audio_tail_length\":300}| {\"na... (string) +AsrService.task_templates.hey_jibo.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":0, \"au... (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[2] = "google_asr" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[3] = "sensory_sdet" (string) +AsrService.task_templates.hey_jibo_cloud.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0,\"bargein\":true,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"speaker_id\":true} * ({\"name\":\"Speaker... (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_resident.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1}" (string) +AsrService.upload_voc_rootcert = "" (string) +AsrService.upload_voc_url = "ws.nuancemobility.net" (string) +AsrService.use_nuance_upload_voc = false (bool) +AsrService.wipable_files[0] = "/var/log/asr/*.pcm" (string) +AsrService.wipable_files[1] = "/var/log/asr/*.wav" (string) +AsrService.wipable_files[2] = "/var/log/asr/*.log" (string) +AsrService.wipable_files[3] = "/var/jibo/asr/sensory_data_td/client_model.bin" (string) +AsrService.wipable_files[4] = "/var/jibo/asr/sensory_data_td/audio/*" (string) +AsrService.wipable_files[5] = "/var/jibo/asr/namelearning_temp/*" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ASRService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +webCore.fileRoot = "/usr/local/var/www/asrservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8088 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-developer.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-developer.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "info" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-int-developer.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-int-developer.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "info" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-normal.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-normal.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "none" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-oobe.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-oobe.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "none" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/menu/menus/example-menu.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/menu/menus/example-menu.json` + +```text +buttons[0].icon = "core://resources/actionIcons/default.png" (string) +buttons[0].id = "one" (string) +buttons[0].label = "One" (string) +buttons[0].utterance = "one" (string) +buttons[1].icon = "core://resources/actionIcons/default.png" (string) +buttons[1].id = "two" (string) +buttons[1].label = "Two" (string) +buttons[1].utterance = "two" (string) +buttons[2].hitAreaPolygon[0] = 165 (int) +buttons[2].hitAreaPolygon[1] = 0 (int) +buttons[2].hitAreaPolygon[2] = 330 (int) +buttons[2].hitAreaPolygon[3] = 82.5 (float) +buttons[2].hitAreaPolygon[4] = 330 (int) +buttons[2].hitAreaPolygon[5] = 247.5 (float) +buttons[2].hitAreaPolygon[6] = 165 (int) +buttons[2].hitAreaPolygon[7] = 330 (int) +buttons[2].hitAreaPolygon[8] = 0 (int) +buttons[2].hitAreaPolygon[9] = 247.5 (float) +buttons[2].hitAreaPolygon[10] = 0 (int) +buttons[2].hitAreaPolygon[11] = 82.5 (float) +buttons[2].icon = "core://resources/actionIcons/default.png" (string) +buttons[2].id = "hex" (string) +buttons[2].label = "Hex" (string) +buttons[2].utterance = "hex" (string) +id = "exampleMenu" (string) +title = "Example Menu" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/menu-entries.d/00-example.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/menu-entries.d/00-example.json` + +```text +[0].childrenDir = "TestSubMenuA" (string) +[0].color = "teal" (string) +[0].description = "Example submenu from @be/menu-entries.d (scans childrenDir for menuEntry.json)" (string) +[0].icon = "resources/icons/settings.png" (string) +[0].id = "__example__" (string) +[0].order = 5 (int) +[0].submenuTitle = "Example Submenu" (string) +[0].title = "Example (Entry Dir)" (string) +[0].type = "submenu" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/menu-entries.d/10-test.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/menu-entries.d/10-test.json` + +```text +[0].childrenDir = "FunStuffTest" (string) +[0].color = "purple" (string) +[0].icon = "resources/icons/fun-stuff.png" (string) +[0].id = "__submenu_test__" (string) +[0].order = 1 (int) +[0].submenuTitle = "Test Submenu" (string) +[0].title = "Test Folder" (string) +[0].type = "submenu" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/ClockOne/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/ClockOne/menuEntry.json` + +```text +color = "blue" (string) +icon = "resources/icons/clock.png" (string) +order = 20 (int) +skillId = "jibo-tbd" (string) +title = "Clock One (launch jibo-tbd)" (string) +type = "skill" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/FunOne/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/FunOne/menuEntry.json` + +```text +color = "orange" (string) +icon = "resources/icons/fun-stuff.png" (string) +order = 10 (int) +skillId = "jibo-tbd" (string) +title = "Fun One (launch jibo-tbd)" (string) +type = "skill" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/menuEntry.json` + +```text +hidden = true (bool) +title = "FunStuffTest Root" (string) +``` + +### /usr/local/etc/jibo-asr-service.json + +Source in this workspace: `usr/local/etc/jibo-asr-service.json` + +```text +AsrService.active_sleep_duration = 5000 (int) +AsrService.asr_resource_path = "/usr/local/share/asr/" (string) +AsrService.audio_loop_sleep_us = 10000 (int) +AsrService.block_duration = 50 (int) +AsrService.cloud_appid = "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503" (string) +AsrService.cloud_appkey = "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b" (string) +AsrService.cloud_establish_http_timeout = 5000 (int) +AsrService.cloud_url = "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/" (string) +AsrService.contacts_checksum = "" (string) +AsrService.customs_checksum = "" (string) +AsrService.dictation_type = "dictation" (string) +AsrService.fadeout_duration = 5000000 (int) +AsrService.google_credential = "/usr/local/share/asr/google_asr/credentials-key.json" (string) +AsrService.idle_sleep_duration = 50000 (int) +AsrService.language = "en-US" (string) +AsrService.log_audio = true (bool) +AsrService.log_level = "INFO" (string) +AsrService.log_path = "/var/log/asr" (string) +AsrService.log_server_url = "https://speech-logging.jibo.com/logdrop/logdrop.py" (string) +AsrService.log_text = true (bool) +AsrService.log_upload_time_interval = 60000 (int) +AsrService.loop_checksum = "1" (string) +AsrService.max_asr_log_dir_size = 12000 (int) +AsrService.max_asr_log_dir_size_before_upload_trigger = 10000 (int) +AsrService.max_logfile_size = 1000 (int) +AsrService.max_memory = 150000 (int) +AsrService.min_available_log_partition_space = 5000 (int) +AsrService.name_learning_nbest = 70 (int) +AsrService.name_learning_resource_path = "/usr/local/share/asr/namelearning" (string) +AsrService.name_learning_temp_path = "/var/jibo/asr/namelearning_temp/" (string) +AsrService.nuance_uId = "b8fb02f2c5794963aaafb8c716ef384c" (string) +AsrService.post_to_performance_service = true (bool) +AsrService.resident_audio_channel = "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}" (string) +AsrService.resident_task = "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}" (string) +AsrService.rewrite_rules.log_audio_no_trigger = "^(?!.*?hey_jibo)(.*)->{\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":300, \"audio_overshoot_duration\":0,\"prebuffer\":false} | ($1)" (string) +AsrService.rewrite_rules.namelearning_EOS = "^(.*?\"name\":\"\\s*name_learning.*)->{\"name\":\"jibo_energy_eos\",\"path\":\"/usr/local/share/asr/jibo_energy_eos\",\"timeout\":10000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"increm... (string) +AsrService.size_to_free_up_when_dir_overflowing = 1000 (int) +AsrService.speaker_id_resource_path = "/var/jibo/asr/" (string) +AsrService.task_templates.cloud.emitting_recogs[0] = "google_asr" (string) +AsrService.task_templates.cloud.emitting_recogs[1] = "sensory_sdet" (string) +AsrService.task_templates.cloud.input_template = "({\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"audio_tail_length\":300}| {\"na... (string) +AsrService.task_templates.hey_jibo.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":0, \"au... (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[2] = "google_asr" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[3] = "sensory_sdet" (string) +AsrService.task_templates.hey_jibo_cloud.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0,\"bargein\":true,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"speaker_id\":true} * ({\"name\":\"Speaker... (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_resident.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1}" (string) +AsrService.upload_voc_rootcert = "" (string) +AsrService.upload_voc_url = "ws.nuancemobility.net" (string) +AsrService.use_nuance_upload_voc = false (bool) +AsrService.wipable_files[0] = "/var/log/asr/*.pcm" (string) +AsrService.wipable_files[1] = "/var/log/asr/*.wav" (string) +AsrService.wipable_files[2] = "/var/log/asr/*.log" (string) +AsrService.wipable_files[3] = "/var/jibo/asr/sensory_data_td/client_model.bin" (string) +AsrService.wipable_files[4] = "/var/jibo/asr/sensory_data_td/audio/*" (string) +AsrService.wipable_files[5] = "/var/jibo/asr/namelearning_temp/*" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ASRService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +webCore.fileRoot = "/usr/local/var/www/asrservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8088 (int) +``` + +### /usr/local/etc/jibo-audio-service.json + +Source in this workspace: `usr/local/etc/jibo-audio-service.json` + +```text +AudioService.AlsaAudio.LocationEstimate.adjust_confidence_scale = 0.9 (float) +AudioService.AlsaAudio.LocationEstimate.alternate_confidence_scale = 0.5 (float) +AudioService.AlsaAudio.LocationHistory.adjust_confidence_scale = 0.9 (float) +AudioService.AlsaAudio.LocationHistory.alternate_confidence_scale = 0.5 (float) +AudioService.AlsaAudio.PlaybackDetector.consec_active_threshold = 2 (int) +AudioService.AlsaAudio.PlaybackDetector.consec_inactive_threshold = 10 (int) +AudioService.AlsaAudio.PlaybackDetector.quiet_threshold = 50 (int) +AudioService.AlsaAudio.PlaybackDetector.sub_samples = 10 (int) +AudioService.AlsaAudio.energy.high_freq = 1000 (int) +AudioService.AlsaAudio.energy.high_q = 2.0 (float) +AudioService.AlsaAudio.energy.low_freq = 200 (int) +AudioService.AlsaAudio.energy.low_q = 1.0 (float) +AudioService.AlsaAudio.energy.mid_freq = 500 (int) +AudioService.AlsaAudio.energy.mid_q = 2.0 (float) +AudioService.SEDiags.injector_white_noise_rx_magnitude_q15[0] = 2048 (int) +AudioService.SEDiags.injector_white_noise_tx_magnitude_q15[0] = 2048 (int) +AudioService.SEDiags.senr_res_echo_fullband_weight_factor[0] = 3 (int) +AudioService.alsaCaptureDevice = "hw:ADC" (string) +AudioService.alsaPlaybackDevice = "hw:TLV320DAC3100" (string) +AudioService.enable_vis_sockets = false (bool) +AudioService.hotphrase_begin_time = 0.8 (float) +AudioService.hotphrase_end_time = 0.2 (float) +AudioService.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +AudioService.log_directory = "/tmp" (string) +AudioService.log_hotphrase_audio = false (bool) +AudioService.moving_noise_duration = 2.0 (float) +AudioService.moving_noise_enabled = false (bool) +AudioService.moving_noise_file = "/usr/local/share/audioservice/brown_noise.wav" (string) +AudioService.moving_noise_min_vel = 0.05 (float) +AudioService.ping_pong_test = false (bool) +AudioService.registryPort = 8181 (int) +AudioService.routerCaptureDevice = "services_sink" (string) +AudioService.routerCaptureLatency = 64000 (int) +AudioService.routerPlaybackDevice = "as_source" (string) +AudioService.routerPlaybackLatency = 64000 (int) +AudioService.serverPort = 8383 (int) +AudioService.useMMFx = true (bool) +ErrorTracker.views[0].errors[0] = "ALSA_CAPTURE_XRUN" (string) +ErrorTracker.views[0].errors[1] = "ALSA_PLAYBACK_XRUN" (string) +ErrorTracker.views[0].errors[2] = "ROUTER_CAPTURE_XRUN" (string) +ErrorTracker.views[0].errors[3] = "ROUTER_CAPTURE_SHORT" (string) +ErrorTracker.views[0].errors[4] = "ROUTER_PLAYBACK_XRUN" (string) +ErrorTracker.views[0].errors[5] = "ROUTER_PLAYBACK_SHORT" (string) +ErrorTracker.views[0].errors[6] = "ROUTER_GET_UNDERRUN" (string) +ErrorTracker.views[0].errors[7] = "ROUTER_PUT_OVERRUN" (string) +ErrorTracker.views[0].errors[8] = "ROUTER_READ_OVERRUN" (string) +ErrorTracker.views[0].errors[9] = "ROUTER_WRITE_UNDERRUN" (string) +ErrorTracker.views[0].errors[10] = "ROUTER_ON_STREAM_OVERFLOW" (string) +ErrorTracker.views[0].errors[11] = "ROUTER_ON_STREAM_UNDERFLOW" (string) +ErrorTracker.views[0].name = "AudioService" (string) +WebCore.fileRoot = "/usr/local/var/www/audioservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8383 (int) +logging.loggers.aa.level = "notice" (string) +logging.loggers.aa.name = "AlsaAudio" (string) +logging.loggers.aala.level = "notice" (string) +logging.loggers.aala.name = "AlsaAudio.LocationAccumulator" (string) +logging.loggers.aalh.level = "notice" (string) +logging.loggers.aalh.name = "AlsaAudio.LocationHistory" (string) +logging.loggers.ar.level = "notice" (string) +logging.loggers.ar.name = "AlsaRouter" (string) +logging.loggers.as.level = "notice" (string) +logging.loggers.as.name = "AudioService" (string) +logging.loggers.pr.level = "notice" (string) +logging.loggers.pr.name = "PulseRouter" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-body-service.json + +Source in this workspace: `usr/local/etc/jibo-body-service.json` + +```text +BodyService.backlightDutyFile = "/sys/class/backlight/backlight.9/brightness" (string) +BodyService.backlightPeriodFile = "/sys/class/backlight/backlight.9/max_brightness" (string) +BodyService.commandOKCount = 25 (int) +BodyService.coreDCDCTempFile = "/sys/class/hwmon/hwmon6/temp4_input" (string) +BodyService.cpuDCDC1TempFile = "/sys/class/hwmon/hwmon6/temp2_input" (string) +BodyService.cpuDCDC2TempFile = "/sys/class/hwmon/hwmon6/temp3_input" (string) +BodyService.cpuTempHiThresh = 90 (int) +BodyService.cpuTempLowThres = 85 (int) +BodyService.cpuThermalZone = "/sys/class/thermal/thermal_zone1" (string) +BodyService.fanControl = false (bool) +BodyService.fanCurrentFile = "/sys/class/hwmon/hwmon6/in3_input" (string) +BodyService.fanCurrentResistor = 0.5 (float) +BodyService.fanOffTemp = 60 (int) +BodyService.fanOnTemp = 70 (int) +BodyService.fanPWMFile = "/sys/class/hwmon/hwmon5/pwm1" (string) +BodyService.fanPWMMax = 255 (int) +BodyService.gpuDCDC1TempFile = "/sys/class/hwmon/hwmon6/temp5_input" (string) +BodyService.gpuDCDC2TempFile = "/sys/class/hwmon/hwmon6/temp6_input" (string) +BodyService.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +BodyService.mainBoardTempFile = "/sys/class/thermal/thermal_zone0/temp" (string) +BodyService.maxCommandRate = 40.0 (float) +BodyService.minCommandRate = 4.0 (float) +BodyService.pmicTempFile = "/sys/class/hwmon/hwmon6/temp1_input" (string) +BodyService.registryPort = 8181 (int) +BodyService.serverPort = 8282 (int) +ErrorTracker.views[0].errors[0] = "NECK_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[1] = "NECK_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[2] = "NECK_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[3] = "NECK_STALL_FAULT" (string) +ErrorTracker.views[0].errors[4] = "NECK_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[5] = "NECK_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[6] = "NECK_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[7] = "NECK_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[8] = "NECK_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[9] = "NECK_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[10] = "NECK_POWER_FAULT" (string) +ErrorTracker.views[0].errors[11] = "NECK_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[12] = "TORSO_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[13] = "TORSO_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[14] = "TORSO_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[15] = "TORSO_STALL_FAULT" (string) +ErrorTracker.views[0].errors[16] = "TORSO_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[17] = "TORSO_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[18] = "TORSO_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[19] = "TORSO_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[20] = "TORSO_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[21] = "TORSO_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[22] = "TORSO_POWER_FAULT" (string) +ErrorTracker.views[0].errors[23] = "TORSO_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[24] = "PELVIS_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[25] = "PELVIS_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[26] = "PELVIS_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[27] = "PELVIS_STALL_FAULT" (string) +ErrorTracker.views[0].errors[28] = "PELVIS_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[29] = "PELVIS_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[30] = "PELVIS_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[31] = "PELVIS_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[32] = "PELVIS_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[33] = "PELVIS_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[34] = "PELVIS_POWER_FAULT" (string) +ErrorTracker.views[0].errors[35] = "PELVIS_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[36] = "NOT_UPRIGHT_LOCKOUT" (string) +ErrorTracker.views[0].errors[37] = "NO_BATTERY_LOCKOUT" (string) +ErrorTracker.views[0].errors[38] = "FALLING_LOCKOUT" (string) +ErrorTracker.views[0].errors[39] = "CPU_TEMP_HIGH" (string) +ErrorTracker.views[0].errors[40] = "BATTERY_TEMP_LOW" (string) +ErrorTracker.views[0].errors[41] = "BATTERY_TEMP_HIGH" (string) +ErrorTracker.views[0].errors[42] = "BATTERY_LOW" (string) +ErrorTracker.views[0].errors[43] = "FALL_DETECTED" (string) +ErrorTracker.views[0].errors[44] = "BB_PACKET_INVALID" (string) +ErrorTracker.views[0].errors[45] = "BB_PACKET_WRONG_DEST" (string) +ErrorTracker.views[0].errors[46] = "BB_PACKET_WRONG_SRC" (string) +ErrorTracker.views[0].name = "BodyService" (string) +WebCore.fileRoot = "/usr/local/var/www/bodyservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8282 (int) +bodyBoard.battMaxTemp = 47.0 (float) +bodyBoard.battMinTemp = 0.0 (float) +bodyBoard.hatchHighThreshold = 1.5 (float) +bodyBoard.hatchLowThreshold = 1.0 (float) +bodyBoard.headTouchMapping[0] = 3 (int) +bodyBoard.headTouchMapping[1] = 5 (int) +bodyBoard.headTouchMapping[2] = 4 (int) +bodyBoard.headTouchMapping[3] = 0 (int) +bodyBoard.headTouchMapping[4] = 2 (int) +bodyBoard.headTouchMapping[5] = 1 (int) +bodyBoard.ledCmdTimeout = 5000 (int) +bodyBoard.lowBattCapHiThresh = 0.42 (float) +bodyBoard.lowBattCapLowThresh = 0.35 (float) +bodyBoard.motorCmdTimeout = 500 (int) +bodyBoard.neckAccLimit = 30.0 (float) +bodyBoard.neckDevice = "/dev/ttyTHS0" (string) +bodyBoard.neckFlipped = true (bool) +bodyBoard.neckOffset = 0.061 (float) +bodyBoard.neckVelLimit = 10.0 (float) +bodyBoard.pelvisAccLimit = 30.0 (float) +bodyBoard.pelvisDevice = "/dev/ttyTHS1" (string) +bodyBoard.pelvisFlipped = true (bool) +bodyBoard.pelvisOffset = 2.742 (float) +bodyBoard.pelvisVelLimit = 10.0 (float) +bodyBoard.torsoAccLimit = 30.0 (float) +bodyBoard.torsoDevice = "/dev/ttyTHS1" (string) +bodyBoard.torsoFlipped = true (bool) +bodyBoard.torsoOffset = 0.052 (float) +bodyBoard.torsoVelLimit = 10.0 (float) +imu.driver.calibrationFile = "/var/jibo/imu/imu-cal.json" (string) +imu.driver.deviceName = "/dev/spidev1.0" (string) +imu.fallDetector.high_g_end_thresh = 25.0 (float) +imu.fallDetector.high_g_start_thresh = 30.0 (float) +imu.fallDetector.low_g_end_thresh = 4.0 (float) +imu.fallDetector.low_g_start_thresh = 2.0 (float) +imu.fallDetector.max_high = 0.1 (float) +imu.fallDetector.max_low_high_sep = 0.1 (float) +imu.fallDetector.min_falling = 1.0 (float) +imu.fallDetector.min_low = 0.1 (float) +imu.gyroOffset.avg_samples = 250 (int) +imu.gyroOffset.still_seconds = 2.0 (float) +imu.gyroOffset.thresh_acc = 0.2 (float) +imu.gyroOffset.thresh_rot = 0.05 (float) +imu.movingDetector.a_acc = 0.01 (float) +imu.movingDetector.a_rot = 0.02 (float) +imu.movingDetector.thresh_acc = 0.3 (float) +imu.movingDetector.thresh_rot = 0.25 (float) +imu.tip_end_thresh = 0.9 (float) +imu.tip_start_thresh = 0.7 (float) +imu.upEstimator.alpha = 0.5 (float) +imu.upMovingDetector.a_acc = 0.5 (float) +imu.upMovingDetector.a_rot = 0.05 (float) +imu.upMovingDetector.thresh_acc = 0.15 (float) +imu.upMovingDetector.thresh_rot = 0.05 (float) +logging.loggers.root.level = "notice" (string) +motionLimiter.disable = false (bool) +motionLimiter.kVelLim = 0.25 (float) +motionLimiter.logEnable = false (bool) +motionLimiter.logFile = "/tmp/motion-limiter.log" (string) +motionLimiter.maxTime = 0.25 (float) +motionLimiter.maxTorque = 70 (int) +motionLimiter.unindexedAcc = 10.0 (float) +motionLimiter.unindexedVel = 1.0 (float) +motionLimiter.velAlphaDn = 0.8 (float) +motionLimiter.velAlphaUp = 0.05 (float) +``` + +### /usr/local/etc/jibo-camera-calibrator.json + +Source in this workspace: `usr/local/etc/jibo-camera-calibrator.json` + +```text +calibrator.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +calibrator.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +calibrator.camera.cuda.devices[0].ae.gainP = 0.02 (float) +calibrator.camera.cuda.devices[0].ae.targetY = 0.35 (float) +calibrator.camera.cuda.devices[0].awb.P = 0.15 (float) +calibrator.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +calibrator.camera.cuda.devices[0].awb.numSamples = 1000 (int) +calibrator.camera.cuda.devices[0].awb.seed = 0 (int) +calibrator.camera.cuda.devices[0].awb.targetU = 0.5 (float) +calibrator.camera.cuda.devices[0].awb.targetV = 0.53 (float) +calibrator.camera.cuda.devices[0].bufferPoolSize = 4 (int) +calibrator.camera.cuda.devices[0].enabled = true (bool) +calibrator.camera.cuda.devices[0].gamma.B = 1.0 (float) +calibrator.camera.cuda.devices[0].gamma.G = 1.0 (float) +calibrator.camera.cuda.devices[0].gamma.R = 1.0 (float) +calibrator.camera.cuda.devices[0].hFlip = true (bool) +calibrator.camera.cuda.devices[0].height = 720 (int) +calibrator.camera.cuda.devices[0].name = "Camera-0" (string) +calibrator.camera.cuda.devices[0].path = "/dev/video1" (string) +calibrator.camera.cuda.devices[0].vFlip = true (bool) +calibrator.camera.cuda.devices[0].width = 1280 (int) +calibrator.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +calibrator.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +calibrator.camera.cuda.devices[1].ae.gainP = 0.02 (float) +calibrator.camera.cuda.devices[1].ae.targetY = 0.35 (float) +calibrator.camera.cuda.devices[1].awb.P = 0.15 (float) +calibrator.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +calibrator.camera.cuda.devices[1].awb.numSamples = 1000 (int) +calibrator.camera.cuda.devices[1].awb.seed = 0 (int) +calibrator.camera.cuda.devices[1].awb.targetU = 0.5 (float) +calibrator.camera.cuda.devices[1].awb.targetV = 0.53 (float) +calibrator.camera.cuda.devices[1].bufferPoolSize = 4 (int) +calibrator.camera.cuda.devices[1].enabled = true (bool) +calibrator.camera.cuda.devices[1].gamma.B = 1.0 (float) +calibrator.camera.cuda.devices[1].gamma.G = 1.0 (float) +calibrator.camera.cuda.devices[1].gamma.R = 1.0 (float) +calibrator.camera.cuda.devices[1].hFlip = true (bool) +calibrator.camera.cuda.devices[1].height = 720 (int) +calibrator.camera.cuda.devices[1].name = "Camera-1" (string) +calibrator.camera.cuda.devices[1].path = "/dev/video0" (string) +calibrator.camera.cuda.devices[1].vFlip = true (bool) +calibrator.camera.cuda.devices[1].width = 1280 (int) +calibrator.camera.file.format = "YUV420p" (string) +calibrator.camera.file.videos[0] = "videos/video-000/video.json" (string) +calibrator.camera.file.videos[1] = "videos/video-001/video.json" (string) +calibrator.camera.type = "CUDA" (string) +calibrator.camera.v4l2.devices.left = "/dev/video0" (string) +calibrator.camera.v4l2.devices.right = "/dev/video1" (string) +calibrator.setup.calibrators[0].debug = false (bool) +calibrator.setup.calibrators[0].filename = "CameraModelParamsR.json" (string) +calibrator.setup.calibrators[0].frame_name = "right_eye" (string) +calibrator.setup.calibrators[1].debug = false (bool) +calibrator.setup.calibrators[1].filename = "CameraModelParamsL.json" (string) +calibrator.setup.calibrators[1].frame_name = "left_eye" (string) +calibrator.setup.circleDistance = 0.117 (float) +calibrator.setup.maxTries = 5 (int) +calibrator.setup.num_calibrators = 2 (int) +calibrator.setup.num_distances = 3 (int) +calibrator.setup.num_positions = 10 (int) +calibrator.setup.num_transforms = 1 (int) +calibrator.setup.output = "/var/jibo/lps" (string) +calibrator.setup.pixSize = 4e-06 (float) +calibrator.setup.positions[0].cameras[0] = 0 (int) +calibrator.setup.positions[0].fileMessage = "wide_pos_1" (string) +calibrator.setup.positions[0].message = "Wide Position 1 - press Enter" (string) +calibrator.setup.positions[0].num_cameras = 1 (int) +calibrator.setup.positions[0].saveBlobData = true (bool) +calibrator.setup.positions[0].saveBlobToCal = true (bool) +calibrator.setup.positions[0].saveImage = true (bool) +calibrator.setup.positions[1].cameras[0] = 0 (int) +calibrator.setup.positions[1].fileMessage = "wide_pos_2" (string) +calibrator.setup.positions[1].message = "Wide Position 2 - press Enter" (string) +calibrator.setup.positions[1].num_cameras = 1 (int) +calibrator.setup.positions[1].saveBlobData = true (bool) +calibrator.setup.positions[1].saveBlobToCal = true (bool) +calibrator.setup.positions[1].saveImage = true (bool) +calibrator.setup.positions[2].cameras[0] = 0 (int) +calibrator.setup.positions[2].fileMessage = "wide_pos_3" (string) +calibrator.setup.positions[2].message = "Wide Position 3 - press Enter" (string) +calibrator.setup.positions[2].num_cameras = 1 (int) +calibrator.setup.positions[2].saveBlobData = true (bool) +calibrator.setup.positions[2].saveBlobToCal = true (bool) +calibrator.setup.positions[2].saveImage = true (bool) +calibrator.setup.positions[3].cameras[0] = 0 (int) +calibrator.setup.positions[3].fileMessage = "wide_pos_4" (string) +calibrator.setup.positions[3].message = "Wide Position 4 - press Enter" (string) +calibrator.setup.positions[3].num_cameras = 1 (int) +calibrator.setup.positions[3].saveBlobData = true (bool) +calibrator.setup.positions[3].saveBlobToCal = true (bool) +calibrator.setup.positions[3].saveImage = true (bool) +calibrator.setup.positions[4].cameras[0] = 0 (int) +calibrator.setup.positions[4].fileMessage = "wide_pos_5" (string) +calibrator.setup.positions[4].message = "Wide Position 5- press Enter" (string) +calibrator.setup.positions[4].num_cameras = 1 (int) +calibrator.setup.positions[4].saveBlobData = true (bool) +calibrator.setup.positions[4].saveBlobToCal = true (bool) +calibrator.setup.positions[4].saveImage = true (bool) +calibrator.setup.positions[5].cameras[0] = 0 (int) +calibrator.setup.positions[5].cameras[1] = 1 (int) +calibrator.setup.positions[5].fileMessage = "both_pos_1" (string) +calibrator.setup.positions[5].message = "Both Position 1 - press Enter" (string) +calibrator.setup.positions[5].num_cameras = 2 (int) +calibrator.setup.positions[5].saveBlobData = true (bool) +calibrator.setup.positions[5].saveBlobToCal = true (bool) +calibrator.setup.positions[5].saveImage = true (bool) +calibrator.setup.positions[6].cameras[0] = 0 (int) +calibrator.setup.positions[6].cameras[1] = 1 (int) +calibrator.setup.positions[6].fileMessage = "both_pos_2" (string) +calibrator.setup.positions[6].message = "Both Position 2 - press Enter" (string) +calibrator.setup.positions[6].num_cameras = 2 (int) +calibrator.setup.positions[6].saveBlobData = true (bool) +calibrator.setup.positions[6].saveBlobToCal = true (bool) +calibrator.setup.positions[6].saveImage = true (bool) +calibrator.setup.positions[7].cameras[0] = 0 (int) +calibrator.setup.positions[7].cameras[1] = 1 (int) +calibrator.setup.positions[7].fileMessage = "both_pos_3" (string) +calibrator.setup.positions[7].message = "Both Position 3 - press Enter" (string) +calibrator.setup.positions[7].num_cameras = 2 (int) +calibrator.setup.positions[7].saveBlobData = true (bool) +calibrator.setup.positions[7].saveBlobToCal = true (bool) +calibrator.setup.positions[7].saveImage = true (bool) +calibrator.setup.positions[8].cameras[0] = 0 (int) +calibrator.setup.positions[8].cameras[1] = 1 (int) +calibrator.setup.positions[8].fileMessage = "both_pos_4" (string) +calibrator.setup.positions[8].message = "Both Position 4 - press Enter" (string) +calibrator.setup.positions[8].num_cameras = 2 (int) +calibrator.setup.positions[8].saveBlobData = true (bool) +calibrator.setup.positions[8].saveBlobToCal = true (bool) +calibrator.setup.positions[8].saveImage = true (bool) +calibrator.setup.positions[9].cameras[0] = 0 (int) +calibrator.setup.positions[9].cameras[1] = 1 (int) +calibrator.setup.positions[9].fileMessage = "both_pos_5" (string) +calibrator.setup.positions[9].message = "Both Position 5 - press Enter" (string) +calibrator.setup.positions[9].num_cameras = 2 (int) +calibrator.setup.positions[9].saveBlobData = true (bool) +calibrator.setup.positions[9].saveBlobToCal = true (bool) +calibrator.setup.positions[9].saveImage = true (bool) +calibrator.setup.recordDelay = 1000 (int) +calibrator.setup.transforms[0].cameraA = 0 (int) +calibrator.setup.transforms[0].cameraB = 1 (int) +calibrator.setup.transforms[0].filename = "InterCameraTransform.json" (string) +``` + +### /usr/local/etc/jibo-certification-service.json + +Source in this workspace: `usr/local/etc/jibo-certification-service.json` + +```text +CertificationService.enableDebugSocket = true (bool) +CertificationService.registryPort = 8181 (int) +CertificationService.serverPort = 9292 (int) +ErrorTracker.views[0].name = "CertificationService" (string) +WebCore.fileRoot = "/usr/local/var/www/certificationservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 9292 (int) +logging.channels.splitter.channels = "syslog" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-hub-shim.json + +Source in this workspace: `usr/local/etc/jibo-hub-shim.json` + +```text +asrService.baseUrl = "http://127.0.0.1:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /usr/local/etc/jibo-identity-service.json + +Source in this workspace: `usr/local/etc/jibo-identity-service.json` + +```text +IdentityService.engine.identifier.deepid.filename = "/var/jibo/identity/deepid.data" (string) +IdentityService.engine.identifier.deepid.gpu_id = 0 (int) +IdentityService.engine.identifier.deepid.iterations = 50000 (int) +IdentityService.engine.identifier.deepid.jlf = "/var/jibo/identity/deepid" (string) +IdentityService.engine.identifier.deepid.kind = "face" (string) +IdentityService.engine.identifier.deepid.model = "/usr/local/share/lps/deepid/CASIA_train_test.prototxt" (string) +IdentityService.engine.identifier.deepid.name = "deepid" (string) +IdentityService.engine.identifier.deepid.sighup_effect = "snapshot" (string) +IdentityService.engine.identifier.deepid.sigint_effect = "stop" (string) +IdentityService.engine.identifier.deepid.size = 128 (int) +IdentityService.engine.identifier.deepid.snapshot = "/usr/local/share/lps/deepid" (string) +IdentityService.engine.identifier.deepid.solver = "/usr/local/share/lps/deepid/CASIA_solver.prototxt" (string) +IdentityService.engine.identifier.deepid.type = "deepid_identifier" (string) +IdentityService.engine.identifier.deepid.weights = "/usr/local/share/lps/deepid/CASIA_iter_666000.caffemodel" (string) +IdentityService.engine.identifier.eigenfaces.attenuation = 100.0 (float) +IdentityService.engine.identifier.eigenfaces.filename = "/var/jibo/identity/eigenfaces.data" (string) +IdentityService.engine.identifier.eigenfaces.kind = "face" (string) +IdentityService.engine.identifier.eigenfaces.name = "eigenfaces" (string) +IdentityService.engine.identifier.eigenfaces.radius = 5 (int) +IdentityService.engine.identifier.eigenfaces.size = 128 (int) +IdentityService.engine.identifier.eigenfaces.type = "eigenfaces_identifier" (string) +IdentityService.engine.identifier.identifier_type = "deepid" (string) +IdentityService.engine.identifier.resnetfaceid.filename = "/var/jibo/identity/resnetfaceid.data" (string) +IdentityService.engine.identifier.resnetfaceid.jlf = "/var/jibo/identity/resnet" (string) +IdentityService.engine.identifier.resnetfaceid.kind = "face" (string) +IdentityService.engine.identifier.resnetfaceid.model = "/usr/local/share/identity/resnet/dlib_face_recognition_resnet_model_v1.dat" (string) +IdentityService.engine.identifier.resnetfaceid.name = "resnetfaceid" (string) +IdentityService.engine.identifier.resnetfaceid.size = 150 (int) +IdentityService.engine.identifier.resnetfaceid.type = "resnetfaceid_identifier" (string) +IdentityService.engine.manager.detector.min_hint_height = 40 (int) +IdentityService.engine.manager.detector.min_hint_width = 40 (int) +IdentityService.engine.manager.directory = "/var/jibo/identity/faces" (string) +IdentityService.engine.manager.kind = "face" (string) +IdentityService.engine.manager.max_attempts = 3 (int) +IdentityService.engine.manager.max_examples = 5 (int) +IdentityService.engine.manager.max_subjects = 16 (int) +IdentityService.engine.processor.interval = 1000 (int) +IdentityService.engine.processor.max_requests = 10 (int) +IdentityService.global.face_landmark_68.file = "/usr/local/share/lps/shape_predictor_68_face_landmarks.dat" (string) +IdentityService.registryPort = 8181 (int) +IdentityService.serverPort = 8489 (int) +WebCore.fileRoot = "/usr/local/var/www/identity" (string) +WebCore.serverPort = 8489 (int) +logging.loggers.l11.level = "information" (string) +logging.loggers.l11.name = "ImageIdentifier" (string) +logging.loggers.l8.level = "information" (string) +logging.loggers.l8.name = "IdentificationManager" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-jetstream-service.json + +Source in this workspace: `usr/local/etc/jibo-jetstream-service.json` + +```text +AudioChannel.block_duration_ms = 50 (int) +AudioChannel.buffer_size = 2048 (int) +AudioChannel.period_size = 85 (int) +HJLogger.comment-logging-fraction = "The probability that an HJ utterance will be logged -- range 0-1" (string) +HJLogger.end_margin_ms = 500 (int) +HJLogger.logging_probability = 0.05 (float) +HJLogger.speech_analytics_log_path = "/var/log/jetstream/hj_logs" (string) +HJLogger.start_margin_ms = 500 (int) +HubAsr.global_maxSpeechTimeout_sec = 20 (int) +HubAsr.global_sosTimeout_sec = 3 (int) +HubAsr.local_maxSpeechTimeout_sec = 20 (int) +HubAsr.local_sosTimeout_sec = 2 (int) +HubClient.encoding-settings.FLAC.bps = 16 (int) +HubClient.encoding-settings.FLAC.channels = 1 (int) +HubClient.encoding-settings.FLAC.sample_rate = 16000 (int) +HubClient.encoding-settings.FLAC.streaming_rate = 3.0 (float) +HubClient.encoding-settings.OGG_OPUS.bitrate = 64000 (int) +HubClient.encoding-settings.OGG_OPUS.channels = 1 (int) +HubClient.encoding-settings.OGG_OPUS.sample_rate = 16000 (int) +HubClient.encoding-settings.OGG_OPUS.streaming_rate = 1.2 (float) +HubClient.encoding-settings.OGG_OPUS.vbr = true (bool) +HubClient.encoding_type = "OGG_OPUS" (string) +HubClient.encoding_type_comment = "This can be either LINEAR16, FLAC, or OGG_OPUS" (string) +HubClient.listen_language = "en-US" (string) +HubClient.listen_url = "/v1/listen" (string) +HubClient.override.entrypoint_hostname = "dev-entrypoint.jibo.com" (string) +HubClient.override.hub_hostname = "192.168.1.28" (string) +HubClient.override.hub_port = 9000 (int) +HubClient.proactive_url = "/v1/proactive" (string) +HubClient.region-settings.alpha-entrypoint.entrypoint_hostname = "alpha-entrypoint.jibo.com" (string) +HubClient.region-settings.alpha-entrypoint.hub_hostname = "alpha-hub.jibo.com" (string) +HubClient.region-settings.alpha-entrypoint.hub_port = 443 (int) +HubClient.region-settings.api.entrypoint_hostname = "api.jibo.com" (string) +HubClient.region-settings.api.hub_hostname = "neo-hub.jibo.com" (string) +HubClient.region-settings.api.hub_port = 443 (int) +HubClient.region-settings.comment = "This is a switch, selected by the 'region' field setting in the robot's /var/jibo/credentials.json file" (string) +HubClient.region-settings.dev-entrypoint.entrypoint_hostname = "dev-entrypoint.jibo.com" (string) +HubClient.region-settings.dev-entrypoint.hub_hostname = "dev-hub.jibo.com" (string) +HubClient.region-settings.dev-entrypoint.hub_port = 443 (int) +HubClient.region-settings.preprod-entrypoint.entrypoint_hostname = "preprod-entrypoint.jibo.com" (string) +HubClient.region-settings.preprod-entrypoint.hub_hostname = "preprod-hub.jibo.com" (string) +HubClient.region-settings.preprod-entrypoint.hub_port = 443 (int) +HubClient.region-settings.stg-entrypoint.entrypoint_hostname = "stg-entrypoint.jibo.com" (string) +HubClient.region-settings.stg-entrypoint.hub_hostname = "stg-hub.jibo.com" (string) +HubClient.region-settings.stg-entrypoint.hub_port = 443 (int) +JetService.log_directory = "/var/log/jetstream" (string) +JetstreamService.registryPort = 8181 (int) +JetstreamService.serverPort = 8090 (int) +JetstreamService.stacktracing = false (bool) +RecogEOS.resource_path = "/usr/local/share/asr/jibo_energy_eos" (string) +RecogHJ.comment = "Positive margin values widen the HJ Phrase spotter's standard endpoints. The end_margin_ms also compensates for the Phrase Spotter's premature endpoint, which is around the beginning O in jibO" (string) +RecogHJ.config_path = "/usr/local/share/asr/hey_jibo" (string) +RecogHJ.hj_end_margin_ms = 100 (int) +RecogHJ.hj_start_margin_ms = 0 (int) +RecogNameLearning.g2p_service = "http://localhost:8089/tts_nbest_prons" (string) +RecogNameLearning.resource_path = "/usr/local/share/asr/namelearning" (string) +RecogNameLearning.speech_analytics_log_path = "/var/log/jetstream/namelearning_logs" (string) +RecogNameLearning.temp_path = "/var/jibo/asr/namelearning_temp/" (string) +RecogSpeakerEnroll.checkQuality = "LOW" (string) +RecogSpeakerEnroll.client_path = "/var/jibo/asr/sensory_data_td/" (string) +RecogSpeakerEnroll.comment = "change next property to 'sensory_log_path' to enable Sensory enroller logging, 'xxxsensory_log_path' to disable" (string) +RecogSpeakerEnroll.enroll_start_margin_ms = 250 (int) +RecogSpeakerEnroll.margin-comment = "positive values for the start margin increase the amount of silence fed to the enroller before the HJ occurs" (string) +RecogSpeakerEnroll.minEnrollUtts = 6 (int) +RecogSpeakerEnroll.speech_analytics_log_path = "/var/log/jetstream/enroller_logs" (string) +RecogSpeakerEnroll.ubm_path = "/usr/local/share/asr/sensory_data_td/" (string) +RecogSpeakerEnroll.xxxsensory_log_path = "/var/jibo/asr/sensory_enroller_logs" (string) +RecogSpeakerID.PHRASEver = "OFF" (string) +RecogSpeakerID.client_path = "/var/jibo/asr/sensory_data_td/" (string) +RecogSpeakerID.comment = "change next property to 'sensory_log_path' to enable Sensory authenticator logging, 'xxxsensory_log_path' to disable" (string) +RecogSpeakerID.comment2 = "id_end_margin is used when retrying to ID with an audio segment, it also controls the end margin of the logged utts" (string) +RecogSpeakerID.confidence_margin = 2 (int) +RecogSpeakerID.id_end_margin_ms = 300 (int) +RecogSpeakerID.id_start_margin_ms = 250 (int) +RecogSpeakerID.margin-comment = "positive values for start and end margins widen the space around the speaker-id HJ" (string) +RecogSpeakerID.threshold = -1.2 (float) +RecogSpeakerID.ubm_path = "/usr/local/share/asr/sensory_data_td/" (string) +RecogSpeakerID.xxxsensory_log_path = "/var/jibo/asr/sensory_auth_logs" (string) +logging.channels.console.class = "ConsoleChannel" (string) +logging.channels.console.pattern = "%Y-%m-%d %H:%M:%S %s: [%p] %t" (string) +logging.channels.splitter.channels = "syslog" (string) +logging.channels.splitter.class = "SplitterChannel" (string) +logging.channels.syslog.class = "RFC_5424_Channel" (string) +logging.channels.syslog.facility = "SYSLOG_DAEMON" (string) +logging.channels.syslog.name = "jibo-jetstream-service" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "debug" (string) +logging.loggers.l1.name = "JetService" (string) +logging.loggers.l2.level = "debug" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "debug" (string) +webCore.fileRoot = "/usr/local/var/www/jetstream" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8090 (int) +``` + +### /usr/local/etc/jibo-kinematic-model.json + +Source in this workspace: `usr/local/etc/jibo-kinematic-model.json` + +```text +transforms[0].frame_type = "STATIC" (string) +transforms[0].name = "root" (string) +transforms[0].parameters.a = 0 (int) +transforms[0].parameters.d = 0 (int) +transforms[0].parameters.initial = 0 (int) +transforms[0].parameters.offset = 0 (int) +transforms[0].parameters.r = 0 (int) +transforms[0].parent = "" (string) +transforms[0].transform_type = "DH" (string) +transforms[1].center_of_mass.x = 0.004438 (float) +transforms[1].center_of_mass.y = 8e-05 (float) +transforms[1].center_of_mass.z = 0.021875 (float) +transforms[1].frame_type = "STATIC" (string) +transforms[1].inertia_tensor.xx = 2.336131 (float) +transforms[1].inertia_tensor.xy = -0.006218 (float) +transforms[1].inertia_tensor.xz = 0.030549 (float) +transforms[1].inertia_tensor.yy = 1.869121 (float) +transforms[1].inertia_tensor.yz = 0.003324 (float) +transforms[1].inertia_tensor.zz = 3.886624 (float) +transforms[1].mass = 1.541647 (float) +transforms[1].name = "base" (string) +transforms[1].parameters.a = 0 (int) +transforms[1].parameters.d = 0 (int) +transforms[1].parameters.initial = 0 (int) +transforms[1].parameters.multiplier = 1 (int) +transforms[1].parameters.offset = 0 (int) +transforms[1].parameters.r = 0 (int) +transforms[1].parent = "root" (string) +transforms[1].transform_type = "DH" (string) +transforms[2].center_of_mass.x = -0.005595 (float) +transforms[2].center_of_mass.y = 0.001393 (float) +transforms[2].center_of_mass.z = 0.020862 (float) +transforms[2].frame_type = "DYNAMIC" (string) +transforms[2].inertia_tensor.xx = 0.934733 (float) +transforms[2].inertia_tensor.xy = 0.005263 (float) +transforms[2].inertia_tensor.xz = 0.014859 (float) +transforms[2].inertia_tensor.yy = 1.049176 (float) +transforms[2].inertia_tensor.yz = 0.006845 (float) +transforms[2].inertia_tensor.zz = 1.600895 (float) +transforms[2].mass = 0.486722 (float) +transforms[2].name = "pelvis" (string) +transforms[2].parameters.a = 0.2269 (float) +transforms[2].parameters.d = 0.043125 (float) +transforms[2].parameters.initial = 0 (int) +transforms[2].parameters.offset = 0 (int) +transforms[2].parameters.r = 0.0 (float) +transforms[2].parent = "base" (string) +transforms[2].transform_type = "DH" (string) +transforms[3].center_of_mass.x = 0.001299 (float) +transforms[3].center_of_mass.y = 0.001032 (float) +transforms[3].center_of_mass.z = 0.020476 (float) +transforms[3].frame_type = "DYNAMIC" (string) +transforms[3].inertia_tensor.xx = 0.765517 (float) +transforms[3].inertia_tensor.xy = -0.02199 (float) +transforms[3].inertia_tensor.xz = 0.005756 (float) +transforms[3].inertia_tensor.yy = 0.847899 (float) +transforms[3].inertia_tensor.yz = -0.013292 (float) +transforms[3].inertia_tensor.zz = 1.027389 (float) +transforms[3].mass = 0.405103 (float) +transforms[3].name = "torso" (string) +transforms[3].parameters.a = -0.37874 (float) +transforms[3].parameters.d = 0.056129 (float) +transforms[3].parameters.initial = 0 (int) +transforms[3].parameters.offset = 0 (int) +transforms[3].parameters.r = 0.0 (float) +transforms[3].parent = "pelvis" (string) +transforms[3].transform_type = "DH" (string) +transforms[4].center_of_mass.x = -0.006929 (float) +transforms[4].center_of_mass.y = -0.000665 (float) +transforms[4].center_of_mass.z = 0.047582 (float) +transforms[4].frame_type = "DYNAMIC" (string) +transforms[4].inertia_tensor.xx = 4.256305 (float) +transforms[4].inertia_tensor.xy = 0.028528 (float) +transforms[4].inertia_tensor.xz = -0.070913 (float) +transforms[4].inertia_tensor.yy = 3.001682 (float) +transforms[4].inertia_tensor.yz = 0.025871 (float) +transforms[4].inertia_tensor.zz = 3.980863 (float) +transforms[4].mass = 1.105841 (float) +transforms[4].name = "head" (string) +transforms[4].parameters.a = 0 (int) +transforms[4].parameters.d = 0.073181 (float) +transforms[4].parameters.initial = 0 (int) +transforms[4].parameters.offset = 0 (int) +transforms[4].parameters.r = 0 (int) +transforms[4].parent = "torso" (string) +transforms[4].transform_type = "DH" (string) +transforms[5].frame_type = "STATIC" (string) +transforms[5].name = "upper_head" (string) +transforms[5].parameters.a = -0.32882 (float) +transforms[5].parameters.d = 0.10809 (float) +transforms[5].parameters.initial = 0 (int) +transforms[5].parameters.offset = 0 (int) +transforms[5].parameters.r = -0.005976 (float) +transforms[5].parent = "head" (string) +transforms[5].transform_type = "DH" (string) +transforms[6].frame_type = "STATIC" (string) +transforms[6].name = "center_face" (string) +transforms[6].parameters.a = -0.32882 (float) +transforms[6].parameters.d = 0.060362 (float) +transforms[6].parameters.initial = 0 (int) +transforms[6].parameters.offset = 0 (int) +transforms[6].parameters.r = 0.035301 (float) +transforms[6].parent = "head" (string) +transforms[6].transform_type = "DH" (string) +transforms[7].frame_type = "STATIC" (string) +transforms[7].name = "imu_dh" (string) +transforms[7].parameters.a = -1.5708 (float) +transforms[7].parameters.d = 0.0 (float) +transforms[7].parameters.initial = 0 (int) +transforms[7].parameters.offset = 0 (int) +transforms[7].parameters.r = 0.0 (float) +transforms[7].parent = "center_face" (string) +transforms[7].transform_type = "DH" (string) +transforms[8].frame_type = "STATIC" (string) +transforms[8].name = "imu" (string) +transforms[8].parameters.dx = -0.041 (float) +transforms[8].parameters.dy = -0.0315 (float) +transforms[8].parameters.dz = 0.015 (float) +transforms[8].parameters.rx = 0 (int) +transforms[8].parameters.ry = 0 (int) +transforms[8].parameters.rz = 0 (int) +transforms[8].parent = "imu_dh" (string) +transforms[8].transform_type = "DOF6" (string) +transforms[9].frame_type = "STATIC" (string) +transforms[9].name = "top_head" (string) +transforms[9].parameters.a = 0 (int) +transforms[9].parameters.d = 0.142443 (float) +transforms[9].parameters.initial = 0 (int) +transforms[9].parameters.offset = 0 (int) +transforms[9].parameters.r = 0.007506 (float) +transforms[9].parent = "head" (string) +transforms[9].transform_type = "DH" (string) +transforms[10].frame_type = "STATIC" (string) +transforms[10].name = "left_eye" (string) +transforms[10].parameters.dx = 0 (int) +transforms[10].parameters.dy = 0.041 (float) +transforms[10].parameters.dz = 0 (int) +transforms[10].parameters.rx = 0 (int) +transforms[10].parameters.ry = 0 (int) +transforms[10].parameters.rz = 0 (int) +transforms[10].parent = "upper_head" (string) +transforms[10].transform_type = "DOF6" (string) +transforms[11].frame_type = "STATIC" (string) +transforms[11].name = "right_eye" (string) +transforms[11].parameters.dx = 0 (int) +transforms[11].parameters.dy = -0.041 (float) +transforms[11].parameters.dz = 0 (int) +transforms[11].parameters.rx = 0 (int) +transforms[11].parameters.ry = 0 (int) +transforms[11].parameters.rz = 0 (int) +transforms[11].parent = "upper_head" (string) +transforms[11].transform_type = "DOF6" (string) +``` + +### /usr/local/etc/jibo-lps-service.json + +Source in this workspace: `usr/local/etc/jibo-lps-service.json` + +```text +AudioSubsystem.player = false (bool) +AudioSubsystem.registryPort = 8181 (int) +BodySubsystem.player = false (bool) +BodySubsystem.registryPort = 8181 (int) +CaptureSubsystem.camera_config_file = "/usr/local/etc/lps/cameras.json" (string) +CaptureSubsystem.player = false (bool) +CaptureSubsystem.watchdog.enabled = false (bool) +CaptureSubsystem.watchdog.period = 3000 (int) +CaptureSubsystem.watchdog.start = 10000 (int) +CaptureSubsystem.watchdog.timeout = 5000 (int) +EngineSubsystem.engine.log.schema.audio.skip = 600 (int) +EngineSubsystem.engine.log.schema.audio.stats = false (bool) +EngineSubsystem.engine.log.schema.axis.skip = 900 (int) +EngineSubsystem.engine.log.schema.axis.stats = false (bool) +EngineSubsystem.engine.log.schema.image.skip = 600 (int) +EngineSubsystem.engine.log.schema.image.stats = false (bool) +EngineSubsystem.engine.log.schema.time.skip = 600 (int) +EngineSubsystem.engine.log.schema.time.stats = false (bool) +EngineSubsystem.engine.state.awareness.lighting.criteria.cameraIds[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.dimensions[0].height = 720 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.dimensions[0].width = 1280 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.outputLevels[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.outputTypes[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.max_exposure = 0.066667 (float) +EngineSubsystem.engine.state.awareness.lighting.max_gain = 16.0 (float) +EngineSubsystem.engine.state.awareness.lighting.max_luminance = 1.0 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[0].lighting = 0.1 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[0].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[1].lighting = 0.2 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[1].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[2].lighting = 1.0 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[2].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[3].lighting = 1.5 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[3].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[0].exposure = 0.01067 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[0].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[1].exposure = 0.05333 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[1].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[2].exposure = 0.90667 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[2].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[3].exposure = 1.01333 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[3].quality = 0 (int) +EngineSubsystem.engine.state.awareness.num_sectors = 8 (int) +EngineSubsystem.engine.state.entity_config_file = "/usr/local/etc/lps/entityConfig.json" (string) +EngineSubsystem.engine.state.geometry.inter_cam_transform_file = "/var/jibo/lps/InterCameraTransform.json" (string) +EngineSubsystem.engine.state.geometry.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +EngineSubsystem.engine.state.geometry.left_camera_file = "/var/jibo/lps/CameraModelParamsL.json" (string) +EngineSubsystem.engine.state.geometry.right_camera_file = "/var/jibo/lps/CameraModelParamsR.json" (string) +EngineSubsystem.engine.state.identification.face.connection_timeout = 60000 (int) +EngineSubsystem.engine.state.identification.face.criteria.cameraIds[0] = 0 (int) +EngineSubsystem.engine.state.identification.face.criteria.dimensions[0].height = 720 (int) +EngineSubsystem.engine.state.identification.face.criteria.dimensions[0].width = 1280 (int) +EngineSubsystem.engine.state.identification.face.criteria.outputTypes[0] = 0 (int) +EngineSubsystem.engine.state.identification.face.kind = "face" (string) +EngineSubsystem.engine.state.identification.face.registry_host = "127.0.0.1" (string) +EngineSubsystem.engine.state.identification.face.registry_port = 8181 (int) +EngineSubsystem.engine.state.identification.face.type = "network_face_identification" (string) +EngineSubsystem.engine.update_period = 60 (int) +EngineSubsystem.global.face_landmark_68.file = "/usr/local/share/lps/shape_predictor_68_face_landmarks.dat" (string) +EngineSubsystem.schemas.focused = "/usr/local/etc/lps/schemas/focused.json" (string) +EngineSubsystem.schemas.minimal = "/usr/local/etc/lps/schemas/minimal.json" (string) +EngineSubsystem.schemas.normal = "/usr/local/etc/lps/schemas/normal.json" (string) +ErrorTracker.views[0].errors[0] = "CAMERA_FAILURE" (string) +ErrorTracker.views[0].name = "LPSService" (string) +ErrorTracker.views[1].name = "MediaService" (string) +LPSService.channels[0] = "PFSearchRegion" (string) +LPSService.channels[1] = "CapDevCUDAExpMeta" (string) +LPSService.channels[2] = "CapDevCUDAExp_0" (string) +LPSService.channels[3] = "CapDevCUDAExp_1" (string) +LPSService.channels[4] = "CapDevCUDAExpStat" (string) +LPSService.registryPort = 8181 (int) +LPSService.serverPort = 8484 (int) +MediaService.audio_source = "MediaIn.monitor" (string) +MediaService.future_wait_ms = 8000 (int) +MediaService.photo_path = "/opt/jibo/Photos/" (string) +MediaService.photographer.compressor.interval = 1000 (int) +MediaService.photographer.compressor.quality = 92 (int) +MediaService.photographer.fourMP.height = 1520 (int) +MediaService.photographer.fourMP.width = 2688 (int) +MediaService.photographer.oneMP.height = 720 (int) +MediaService.photographer.oneMP.width = 1280 (int) +MediaService.photographer.request_queue_max_size = 5 (int) +MediaService.recording_path = "/opt/jibo/Recordings/" (string) +MediaService.registryPort = 8181 (int) +MediaService.serverPort = 8486 (int) +PlayerSubsystem.audio.detections.directory = "/opt/jibo/data/player/audio/detections" (string) +PlayerSubsystem.body.axis.directory = "/opt/jibo/data/player/body/axis" (string) +PlayerSubsystem.capture.frames.directory = "/opt/jibo/data/player/capture/frames" (string) +PlayerSubsystem.root = "/opt/jibo/data/player" (string) +RecorderSubsystem.audio.detections.directory = "/opt/jibo/data/recorder/audio/detections" (string) +RecorderSubsystem.audio.detections.padding = 7 (int) +RecorderSubsystem.body.axis.directory = "/opt/jibo/data/recorder/body/axis" (string) +RecorderSubsystem.body.axis.padding = 7 (int) +RecorderSubsystem.capture.frames.criteria.dimensions[0].height = 360 (int) +RecorderSubsystem.capture.frames.criteria.dimensions[0].width = 640 (int) +RecorderSubsystem.capture.frames.criteria.outputTypes[0] = 0 (int) +RecorderSubsystem.capture.frames.directory = "/opt/jibo/data/recorder/capture/frames" (string) +RecorderSubsystem.capture.frames.padding = 7 (int) +RecorderSubsystem.lps.audio-awareness.directory = "/opt/jibo/data/recorder/lps/audio-awareness/" (string) +RecorderSubsystem.lps.audio-awareness.padding = 7 (int) +RecorderSubsystem.lps.visual-awareness.directory = "/opt/jibo/data/recorder/lps/visual-awareness/" (string) +RecorderSubsystem.lps.visual-awareness.padding = 7 (int) +RecorderSubsystem.root = "/opt/jibo/data/recorder" (string) +WebCoreLPS.fileRoot = "/usr/local/var/www/lps" (string) +WebCoreLPS.serverPort = 8484 (int) +WebCoreMedia.fileRoot = "/usr/local/var/www/media" (string) +WebCoreMedia.serverPort = 8486 (int) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ImageIdentifier" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "IdentityFusion" (string) +logging.loggers.l3.level = "warning" (string) +logging.loggers.l3.name = "Util.Channel" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-media-service.json + +Source in this workspace: `usr/local/etc/jibo-media-service.json` + +```text +MediaService.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +MediaService.camera.cuda.devices[0].ae.exposureP = 0.1 (float) +MediaService.camera.cuda.devices[0].ae.gainP = 0.05 (float) +MediaService.camera.cuda.devices[0].ae.targetY = 0.35 (float) +MediaService.camera.cuda.devices[0].awb.P = 0.15 (float) +MediaService.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +MediaService.camera.cuda.devices[0].awb.numSamples = 1000 (int) +MediaService.camera.cuda.devices[0].awb.seed = 0 (int) +MediaService.camera.cuda.devices[0].awb.targetU = 0.5 (float) +MediaService.camera.cuda.devices[0].awb.targetV = 0.53 (float) +MediaService.camera.cuda.devices[0].bufferPoolSize = 4 (int) +MediaService.camera.cuda.devices[0].enabled = true (bool) +MediaService.camera.cuda.devices[0].format = 3 (int) +MediaService.camera.cuda.devices[0].gamma.U = 1.0 (float) +MediaService.camera.cuda.devices[0].gamma.V = 1.0 (float) +MediaService.camera.cuda.devices[0].gamma.Y = 0.5 (float) +MediaService.camera.cuda.devices[0].hFlip = true (bool) +MediaService.camera.cuda.devices[0].height = 720 (int) +MediaService.camera.cuda.devices[0].name = "Camera-0" (string) +MediaService.camera.cuda.devices[0].path = "/dev/video0" (string) +MediaService.camera.cuda.devices[0].vFlip = true (bool) +MediaService.camera.cuda.devices[0].width = 1280 (int) +MediaService.camera.file.format = "YUV420p" (string) +MediaService.camera.file.videos[0] = "videos/video-000/video.json" (string) +MediaService.camera.file.videos[1] = "videos/video-001/video.json" (string) +MediaService.camera.type = "CUDA" (string) +MediaService.camera.v4l2.devices.left = "/dev/video0" (string) +MediaService.camera.v4l2.devices.right = "/dev/video1" (string) +MediaService.registryPort = 8181 (int) +MediaService.serverPort = 7979 (int) +WebCore.fileRoot = "/usr/local/var/www/media" (string) +WebCore.serverPort = 7979 (int) +logging.channels.console.class = "ConsoleChannel" (string) +logging.channels.console.pattern = "%Y-%m-%d %H:%M:%S %s: [%p] %t" (string) +logging.channels.splitter.channels = "syslog" (string) +logging.channels.splitter.class = "SplitterChannel" (string) +logging.channels.syslog.class = "SyslogChannel" (string) +logging.channels.syslog.facility = "SYSLOG_DAEMON" (string) +logging.channels.syslog.name = "jibo-media-service" (string) +logging.channels.syslog.pattern = "%s: [%p] %t" (string) +logging.loggers.l1.channel = "splitter" (string) +logging.loggers.l1.level = "debug" (string) +logging.loggers.l1.name = "Application" (string) +``` + +### /usr/local/etc/jibo-nlu-service.json + +Source in this workspace: `usr/local/etc/jibo-nlu-service.json` + +```text +Service.default_locale = "en-us" (string) +Service.handler = "nlu_interface" (string) +Service.host = "localhost" (string) +Service.log_ws = "nlu_logs" (string) +Service.name = "nlu" (string) +Service.nlu_data_dir = "/usr/local/share/nlu-data" (string) +Service.path = "/" (string) +Service.port = 8787 (int) +Service.post_to_perf_monitor_service = true (bool) +Service.reg_timer = 10000 (int) +Service.reset_memory_ws = "reset_memory" (string) +Service.tls = "" (string) +Service.ttl = 30 (int) +Service.version = "v2.7.6" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "NluService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +parsing.cmp_params.log_weights = false (bool) +parsing.cmp_params.minimize_fst = true (bool) +parsing.cmp_params.union_minimize_fst = false (bool) +parsing.parsing_params.max_num_states = 50 (int) +parsing.parsing_params.use_v8_interpreter = true (bool) +webCore.requestLogging = false (bool) +webCore.serverPort = 8787 (int) +``` + +### /usr/local/etc/jibo-server-service.json + +Source in this workspace: `usr/local/etc/jibo-server-service.json` + +```text +ErrorTracker.views[0].errors[0] = "CANNOT_CONNECT_TO_SERVER" (string) +ErrorTracker.views[0].name = "ServerService" (string) +NotificationSubsystem.refreshInterval = 15000 (int) +NotificationSubsystem.registryPort = 8181 (int) +NotificationSubsystem.serverURLSuffix = "-socket.jibo.com" (string) +ServerService.registryPort = 8181 (int) +ServerService.serverPort = 8888 (int) +WebCore.fileRoot = "/usr/local/var/www/server" (string) +WebCore.serverPort = 8888 (int) +logging.loggers.l2.channel = "splitter" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "NotificationSubsystem" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-service-center-service.json + +Source in this workspace: `usr/local/etc/jibo-service-center-service.json` + +```text +ErrorTracker.views[0].name = "ServiceCenterService" (string) +ServiceCenterService.registryPort = 8181 (int) +ServiceCenterService.serverPort = 9797 (int) +WebCore.fileRoot = "/usr/local/var/www/servicecenterservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 9797 (int) +logging.channels.splitter.channels = "syslog" (string) +logging.loggers.ServiceCenterService.level = "notice" (string) +logging.loggers.ServiceCenterService.name = "ServiceCenterService" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-service-registry.json + +Source in this workspace: `usr/local/etc/jibo-service-registry.json` + +```text +ManagementCore.authenticate = false (bool) +ManagementCore.fileRoot = "/usr/local/var/www/service-management" (string) +ManagementCore.validate = false (bool) +ServiceRegistry.registryPort = 8181 (int) +ServiceRegistry.serverPort = 8181 (int) +WebCore.fileRoot = "/usr/local/var/www/service-registry" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8181 (int) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-developer.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-developer.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "info" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.DevShell.debugPort = 9191 (int) +services.DevShell.port = 8686 (int) +services.DevShell.sdkDest = "bin/on-robot/" (string) +services.DevShell.skillDest = "/opt/jibo/Skills" (string) +services.DevShell.skillUser = "jibo-skill" (string) +services.DevShell.syncPort = 8989 (int) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.PerformanceService.port = 10003 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "info" (string) +logging.namespaces..syslog = "info" (string) +logging.namespaces.C.AsrService.console = "info" (string) +logging.namespaces.C.AsrService.syslog = "debug" (string) +logging.namespaces.SSM.Client.ASR.console = "info" (string) +logging.namespaces.SSM.Client.ASR.syslog = "debug" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.DevShell.debugPort = 9191 (int) +services.DevShell.port = 8686 (int) +services.DevShell.sdkDest = "bin/on-robot/" (string) +services.DevShell.skillDest = "/opt/jibo/Jibo/Skills" (string) +services.DevShell.skillUser = "jibo-skill" (string) +services.DevShell.syncPort = 8989 (int) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.PerformanceService.port = 10003 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-normal.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-normal.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "none" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.SkillsService.startSkill = "@be/be" (string) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-oobe.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-oobe.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "none" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.SkillsService.startSkill = "oobe-config" (string) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-sts.json + +Source in this workspace: `usr/local/etc/jibo-sts.json` + +_File is empty in this tree._ + +### /usr/local/etc/jibo-system-manager.json + +Source in this workspace: `usr/local/etc/jibo-system-manager.json` + +```text +ErrorTracker.views[0].errors[0] = "SERVICE_CRASH_BODY" (string) +ErrorTracker.views[0].errors[1] = "SERVICE_CRASH_AUDIO" (string) +ErrorTracker.views[0].errors[2] = "SERVICE_CRASH_TTS" (string) +ErrorTracker.views[0].errors[3] = "SERVICE_CRASH_ASR" (string) +ErrorTracker.views[0].errors[4] = "SERVICE_CRASH_NLU" (string) +ErrorTracker.views[0].errors[5] = "SERVICE_CRASH_IDENTITY" (string) +ErrorTracker.views[0].errors[6] = "SERVICE_CRASH_LPS" (string) +ErrorTracker.views[0].errors[7] = "SERVICE_CRASH_MEDIA_MANAGER" (string) +ErrorTracker.views[0].errors[8] = "SERVICE_CRASH_SECURE_TRANSFER" (string) +ErrorTracker.views[0].errors[9] = "SERVICE_CRASH_MONITOR" (string) +ErrorTracker.views[0].errors[10] = "SERVICE_CRASH_SERVER" (string) +ErrorTracker.views[0].errors[11] = "SERVICE_CRASH_SSM" (string) +ErrorTracker.views[0].errors[12] = "SERVICE_CRASH_EXPRESSION" (string) +ErrorTracker.views[0].errors[13] = "WPA_CONTROL_INTERFACE_DOWN" (string) +ErrorTracker.views[0].name = "SystemManager" (string) +ManagementCore.authenticate = false (bool) +ManagementCore.validate = false (bool) +SystemManager.credentials.path = "/var/jibo/credentials.json" (string) +SystemManager.firewall.mode_commands.remote_operation[0] = "-p tcp --syn --dport 7160 -j ACCEPT" (string) +SystemManager.powerButton.duration = 2000 (int) +SystemManager.powerButton.path = "/dev/input/event0" (string) +SystemManager.powerButton.warning = 10000 (int) +SystemManager.powerManager.warning = 10000 (int) +SystemManager.registryPort = 8181 (int) +SystemManager.serverPort = 8585 (int) +SystemManager.service.backup.directory = "/opt/tmp/backup" (string) +SystemManager.service.backup.executable = "/usr/local/bin/jibo-system-backup" (string) +SystemManager.service.backup.file = "/opt/tmp/backup.tar.bz2" (string) +SystemManager.service.connection_timeout = 210000 (int) +SystemManager.service.restore.directory = "/opt/tmp/restore" (string) +SystemManager.service.restore.executable = "/usr/local/bin/jibo-system-restore" (string) +SystemManager.service.restore.file = "/opt/tmp/restore.tar.bz2" (string) +SystemManager.service.services[0].crash_code = "SERVICE_CRASH_BODY" (string) +SystemManager.service.services[0].executable = "/usr/local/bin/jibo-body-service" (string) +SystemManager.service.services[0].modes.certification.enabled = false (bool) +SystemManager.service.services[0].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[0].modes.default.arguments[1] = "/usr/local/etc/jibo-body-service.json" (string) +SystemManager.service.services[0].modes.default.directory = "" (string) +SystemManager.service.services[0].modes.default.enabled = true (bool) +SystemManager.service.services[0].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[0].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[0].name = "body" (string) +SystemManager.service.services[0].order = 0 (int) +SystemManager.service.services[0].shutdown_timeout = 10000 (int) +SystemManager.service.services[0].startup_timeout = 10000 (int) +SystemManager.service.services[1].crash_code = "SERVICE_CRASH_AUDIO" (string) +SystemManager.service.services[1].executable = "/usr/local/bin/jibo-audio-service" (string) +SystemManager.service.services[1].modes.certification.enabled = false (bool) +SystemManager.service.services[1].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[1].modes.default.arguments[1] = "/usr/local/etc/jibo-audio-service.json" (string) +SystemManager.service.services[1].modes.default.directory = "" (string) +SystemManager.service.services[1].modes.default.enabled = true (bool) +SystemManager.service.services[1].name = "audio" (string) +SystemManager.service.services[1].order = 1 (int) +SystemManager.service.services[1].shutdown_timeout = 10000 (int) +SystemManager.service.services[1].startup_timeout = 10000 (int) +SystemManager.service.services[2].crash_code = "SERVICE_CRASH_TTS" (string) +SystemManager.service.services[2].executable = "/usr/local/bin/jibo-tts-service" (string) +SystemManager.service.services[2].modes.certification.enabled = false (bool) +SystemManager.service.services[2].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[2].modes.default.arguments[1] = "/usr/local/etc/jibo-tts-service.json" (string) +SystemManager.service.services[2].modes.default.directory = "" (string) +SystemManager.service.services[2].modes.default.enabled = true (bool) +SystemManager.service.services[2].modes.service.enabled = false (bool) +SystemManager.service.services[2].name = "tts" (string) +SystemManager.service.services[2].order = 2 (int) +SystemManager.service.services[2].shutdown_timeout = 10000 (int) +SystemManager.service.services[2].startup_timeout = 10000 (int) +SystemManager.service.services[3].crash_code = "SERVICE_CRASH_ASR" (string) +SystemManager.service.services[3].executable = "/usr/local/bin/jibo-asr-service" (string) +SystemManager.service.services[3].modes.certification.enabled = false (bool) +SystemManager.service.services[3].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[3].modes.default.arguments[1] = "/usr/local/etc/jibo-asr-service.json" (string) +SystemManager.service.services[3].modes.default.directory = "" (string) +SystemManager.service.services[3].modes.default.enabled = true (bool) +SystemManager.service.services[3].modes.service.enabled = false (bool) +SystemManager.service.services[3].name = "asr" (string) +SystemManager.service.services[3].order = 2 (int) +SystemManager.service.services[3].shutdown_timeout = 10000 (int) +SystemManager.service.services[3].startup_timeout = 10000 (int) +SystemManager.service.services[4].crash_code = "SERVICE_CRASH_JETSTREAM" (string) +SystemManager.service.services[4].executable = "/usr/local/bin/jibo-jetstream-service" (string) +SystemManager.service.services[4].modes.certification.enabled = false (bool) +SystemManager.service.services[4].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[4].modes.default.arguments[1] = "/usr/local/etc/jibo-jetstream-service.json" (string) +SystemManager.service.services[4].modes.default.directory = "" (string) +SystemManager.service.services[4].modes.default.enabled = true (bool) +SystemManager.service.services[4].modes.service.enabled = true (bool) +SystemManager.service.services[4].name = "jetstream" (string) +SystemManager.service.services[4].order = 2 (int) +SystemManager.service.services[4].shutdown_timeout = 10000 (int) +SystemManager.service.services[4].startup_timeout = 10000 (int) +SystemManager.service.services[5].crash_code = "SERVICE_CRASH_NLU" (string) +SystemManager.service.services[5].executable = "/usr/local/bin/jibo-nlu-service" (string) +SystemManager.service.services[5].modes.certification.enabled = false (bool) +SystemManager.service.services[5].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[5].modes.default.arguments[1] = "/usr/local/etc/jibo-nlu-service.json" (string) +SystemManager.service.services[5].modes.default.directory = "" (string) +SystemManager.service.services[5].modes.default.enabled = false (bool) +SystemManager.service.services[5].modes.service.enabled = false (bool) +SystemManager.service.services[5].name = "nlu" (string) +SystemManager.service.services[5].order = 2 (int) +SystemManager.service.services[5].shutdown_timeout = 10000 (int) +SystemManager.service.services[5].startup_timeout = 10000 (int) +SystemManager.service.services[6].crash_code = "SERVICE_CRASH_IDENTITY" (string) +SystemManager.service.services[6].executable = "/usr/local/bin/jibo-identity-service" (string) +SystemManager.service.services[6].modes.certification.enabled = false (bool) +SystemManager.service.services[6].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[6].modes.default.arguments[1] = "/usr/local/etc/jibo-identity-service.json" (string) +SystemManager.service.services[6].modes.default.directory = "" (string) +SystemManager.service.services[6].modes.default.enabled = true (bool) +SystemManager.service.services[6].modes.default.environment.GLOG_minloglevel = "2" (string) +SystemManager.service.services[6].modes.service.enabled = false (bool) +SystemManager.service.services[6].name = "identity" (string) +SystemManager.service.services[6].order = 2 (int) +SystemManager.service.services[6].shutdown_timeout = 10000 (int) +SystemManager.service.services[6].startup_timeout = 10000 (int) +SystemManager.service.services[7].crash_code = "SERVICE_CRASH_LPS" (string) +SystemManager.service.services[7].executable = "/usr/local/bin/jibo-lps-service" (string) +SystemManager.service.services[7].modes.certification.enabled = false (bool) +SystemManager.service.services[7].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[7].modes.default.arguments[1] = "/usr/local/etc/jibo-lps-service.json" (string) +SystemManager.service.services[7].modes.default.directory = "" (string) +SystemManager.service.services[7].modes.default.enabled = true (bool) +SystemManager.service.services[7].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[7].modes.default.environment.GST_GL_XINITTHREADS = "1" (string) +SystemManager.service.services[7].modes.default.environment.GST_REGISTRY = "/usr/share/gstreamer-1.0/registry.$(uname -m).bin" (string) +SystemManager.service.services[7].modes.default.environment.GST_REGISTRY_UPDATE = "no" (string) +SystemManager.service.services[7].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[7].name = "lps" (string) +SystemManager.service.services[7].order = 3 (int) +SystemManager.service.services[7].shutdown_timeout = 10000 (int) +SystemManager.service.services[7].startup_timeout = 60000 (int) +SystemManager.service.services[8].crash_code = "SERVICE_CRASH_SECURE_TRANSFER" (string) +SystemManager.service.services[8].executable = "/usr/bin/node" (string) +SystemManager.service.services[8].modes.certification.enabled = false (bool) +SystemManager.service.services[8].modes.default.arguments[0] = "/usr/local/bin/jibo-sts/index.js" (string) +SystemManager.service.services[8].modes.default.directory = "" (string) +SystemManager.service.services[8].modes.default.enabled = true (bool) +SystemManager.service.services[8].modes.int-developer.arguments[0] = "--inspect=10775" (string) +SystemManager.service.services[8].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-sts/index.js" (string) +SystemManager.service.services[8].modes.int-developer.directory = "" (string) +SystemManager.service.services[8].modes.int-developer.enabled = true (bool) +SystemManager.service.services[8].modes.service.enabled = false (bool) +SystemManager.service.services[8].name = "secure-transfer" (string) +SystemManager.service.services[8].order = 4 (int) +SystemManager.service.services[8].shutdown_timeout = 10000 (int) +SystemManager.service.services[8].startup_timeout = 10000 (int) +SystemManager.service.services[9].crash_code = "SERVICE_CRASH_SECURITY_CONTROLLER_SERVICE" (string) +SystemManager.service.services[9].executable = "/usr/bin/node" (string) +SystemManager.service.services[9].modes.certification.enabled = false (bool) +SystemManager.service.services[9].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-scs.js" (string) +SystemManager.service.services[9].modes.default.directory = "" (string) +SystemManager.service.services[9].modes.default.enabled = true (bool) +SystemManager.service.services[9].modes.int-developer.arguments[0] = "--inspect=10226" (string) +SystemManager.service.services[9].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-scs.js" (string) +SystemManager.service.services[9].modes.int-developer.directory = "" (string) +SystemManager.service.services[9].modes.int-developer.enabled = true (bool) +SystemManager.service.services[9].modes.service.enabled = false (bool) +SystemManager.service.services[9].name = "security-controller-service" (string) +SystemManager.service.services[9].order = 4 (int) +SystemManager.service.services[9].shutdown_timeout = 10000 (int) +SystemManager.service.services[9].startup_timeout = 10000 (int) +SystemManager.service.services[10].crash_code = "SERVICE_CRASH_MEDIA_MANAGER" (string) +SystemManager.service.services[10].executable = "/usr/bin/node" (string) +SystemManager.service.services[10].modes.certification.enabled = false (bool) +SystemManager.service.services[10].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-mms.js" (string) +SystemManager.service.services[10].modes.default.directory = "" (string) +SystemManager.service.services[10].modes.default.enabled = true (bool) +SystemManager.service.services[10].modes.int-developer.arguments[0] = "--inspect=10225" (string) +SystemManager.service.services[10].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-mms.js" (string) +SystemManager.service.services[10].modes.int-developer.directory = "" (string) +SystemManager.service.services[10].modes.int-developer.enabled = true (bool) +SystemManager.service.services[10].modes.service.enabled = false (bool) +SystemManager.service.services[10].name = "media-manager" (string) +SystemManager.service.services[10].order = 4 (int) +SystemManager.service.services[10].shutdown_timeout = 10000 (int) +SystemManager.service.services[10].startup_timeout = 10000 (int) +SystemManager.service.services[11].crash_code = "SERVICE_CRASH_MONITOR" (string) +SystemManager.service.services[11].executable = "/usr/local/bin/jibo-system-monitoring-service" (string) +SystemManager.service.services[11].modes.certification.enabled = false (bool) +SystemManager.service.services[11].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[11].modes.default.arguments[1] = "/usr/local/etc/jibo-system-monitoring-service.json" (string) +SystemManager.service.services[11].modes.default.directory = "" (string) +SystemManager.service.services[11].modes.default.enabled = true (bool) +SystemManager.service.services[11].name = "monitor" (string) +SystemManager.service.services[11].order = 4 (int) +SystemManager.service.services[11].shutdown_timeout = 10000 (int) +SystemManager.service.services[11].startup_timeout = 10000 (int) +SystemManager.service.services[12].crash_code = "SERVICE_CRASH_SERVER" (string) +SystemManager.service.services[12].executable = "/usr/local/bin/jibo-server-service" (string) +SystemManager.service.services[12].modes.certification.enabled = false (bool) +SystemManager.service.services[12].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[12].modes.default.arguments[1] = "/usr/local/etc/jibo-server-service.json" (string) +SystemManager.service.services[12].modes.default.directory = "" (string) +SystemManager.service.services[12].modes.default.enabled = true (bool) +SystemManager.service.services[12].modes.service.enabled = false (bool) +SystemManager.service.services[12].name = "server" (string) +SystemManager.service.services[12].order = 4 (int) +SystemManager.service.services[12].shutdown_timeout = 10000 (int) +SystemManager.service.services[12].startup_timeout = 10000 (int) +SystemManager.service.services[13].crash_code = "SERVICE_CRASH_SSM" (string) +SystemManager.service.services[13].executable = "/usr/bin/node" (string) +SystemManager.service.services[13].modes.certification.enabled = false (bool) +SystemManager.service.services[13].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-ssm.js" (string) +SystemManager.service.services[13].modes.default.directory = "" (string) +SystemManager.service.services[13].modes.default.enabled = true (bool) +SystemManager.service.services[13].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[13].modes.default.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[13].modes.default.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[13].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[13].modes.default.environment.XDG_CONFIG_HOME = "/tmp/.config" (string) +SystemManager.service.services[13].modes.int-developer.arguments[0] = "--inspect=10223" (string) +SystemManager.service.services[13].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-ssm.js" (string) +SystemManager.service.services[13].modes.int-developer.directory = "" (string) +SystemManager.service.services[13].modes.int-developer.enabled = true (bool) +SystemManager.service.services[13].modes.int-developer.environment.DISPLAY = ":0" (string) +SystemManager.service.services[13].modes.int-developer.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[13].modes.int-developer.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[13].modes.int-developer.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[13].modes.int-developer.environment.XDG_CONFIG_HOME = "/tmp/.config" (string) +SystemManager.service.services[13].modes.service.enabled = false (bool) +SystemManager.service.services[13].name = "ssm" (string) +SystemManager.service.services[13].order = 5 (int) +SystemManager.service.services[13].shutdown_timeout = 10000 (int) +SystemManager.service.services[13].startup_timeout = 60000 (int) +SystemManager.service.services[14].crash_code = "SERVICE_CRASH_EXPRESSION" (string) +SystemManager.service.services[14].executable = "/usr/bin/node" (string) +SystemManager.service.services[14].modes.certification.enabled = false (bool) +SystemManager.service.services[14].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/lib/expression-process.js" (string) +SystemManager.service.services[14].modes.default.directory = "" (string) +SystemManager.service.services[14].modes.default.enabled = true (bool) +SystemManager.service.services[14].modes.default.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[14].modes.default.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[14].modes.int-developer.arguments[0] = "--inspect=10224" (string) +SystemManager.service.services[14].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-expression.js" (string) +SystemManager.service.services[14].modes.int-developer.directory = "" (string) +SystemManager.service.services[14].modes.int-developer.enabled = true (bool) +SystemManager.service.services[14].modes.int-developer.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[14].modes.int-developer.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[14].modes.service.enabled = false (bool) +SystemManager.service.services[14].name = "expression" (string) +SystemManager.service.services[14].order = 4 (int) +SystemManager.service.services[14].shutdown_timeout = 10000 (int) +SystemManager.service.services[14].startup_timeout = 60000 (int) +SystemManager.service.services[15].crash_code = "SERVICE_CRASH_CERTIFICATION" (string) +SystemManager.service.services[15].executable = "/usr/local/bin/jibo-certification-service" (string) +SystemManager.service.services[15].modes.certification.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.certification.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.certification.directory = "" (string) +SystemManager.service.services[15].modes.certification.enabled = true (bool) +SystemManager.service.services[15].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.default.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.default.directory = "" (string) +SystemManager.service.services[15].modes.default.enabled = false (bool) +SystemManager.service.services[15].modes.service.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.service.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.service.directory = "" (string) +SystemManager.service.services[15].modes.service.enabled = true (bool) +SystemManager.service.services[15].name = "certification" (string) +SystemManager.service.services[15].order = 0 (int) +SystemManager.service.services[15].shutdown_timeout = 10000 (int) +SystemManager.service.services[15].startup_timeout = 10000 (int) +SystemManager.service.services[16].crash_code = "SERVICE_CRASH_SERVICE_CENTER" (string) +SystemManager.service.services[16].executable = "/usr/local/bin/jibo-service-center-service" (string) +SystemManager.service.services[16].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[16].modes.default.arguments[1] = "/usr/local/etc/jibo-service-center-service.json" (string) +SystemManager.service.services[16].modes.default.directory = "" (string) +SystemManager.service.services[16].modes.default.enabled = false (bool) +SystemManager.service.services[16].modes.service.arguments[0] = "-c" (string) +SystemManager.service.services[16].modes.service.arguments[1] = "/usr/local/etc/jibo-service-center-service.json" (string) +SystemManager.service.services[16].modes.service.directory = "" (string) +SystemManager.service.services[16].modes.service.enabled = true (bool) +SystemManager.service.services[16].modes.service.environment.DISPLAY = ":0" (string) +SystemManager.service.services[16].modes.service.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[16].name = "service-center" (string) +SystemManager.service.services[16].order = 5 (int) +SystemManager.service.services[16].shutdown_timeout = 10000 (int) +SystemManager.service.services[16].startup_timeout = 10000 (int) +SystemManager.skill.arguments[0] = "--remote-debugging-port=9222" (string) +SystemManager.skill.arguments[1] = "/usr/local/bin/jibo-ssm/skill-main.js" (string) +SystemManager.skill.environment.DISPLAY = ":0" (string) +SystemManager.skill.environment.JIBO_GQA_ENDPOINT = "http://192.168.1.28:8080" (string) +SystemManager.skill.environment.JIBO_HUB_SHIM_HOST = "192.168.1.28" (string) +SystemManager.skill.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.skill.environment.XDG_CONFIG_HOME = "/opt/home/jibo-skill/.config" (string) +SystemManager.skill.executable = "/usr/bin/electron/electron" (string) +SystemManager.skill.modes.developer.user = "jibo-skill" (string) +SystemManager.skill.modes.int-developer.user = "jibo-skill" (string) +SystemManager.skill.modes.normal.user = "jibo-skill" (string) +SystemManager.skill.modes.oobe.user = "jibo-skill" (string) +SystemManager.skill.path.devs[0] = "/opt/jibo/Skills" (string) +SystemManager.skill.path.jibo[0] = "/opt/jibo/Jibo/Skills/@be" (string) +SystemManager.skill.path.jibo[1] = "/opt/jibo/Jibo/Skills" (string) +SystemManager.storage.mount_entries_file = "/proc/mounts" (string) +SystemManager.storage.semantic.jibo = "/opt/jibo/Jibo" (string) +SystemManager.storage.semantic.knowledge = "/opt/jibo/Knowledge" (string) +SystemManager.storage.semantic.photos = "/opt/jibo/Photos" (string) +SystemManager.storage.semantic.recordings = "/opt/jibo/Recordings" (string) +SystemManager.storage.semantic.skills = "/opt/jibo/Skills" (string) +SystemManager.time.hwclock.arguments[0] = "--systohc" (string) +SystemManager.time.hwclock.command = "/sbin/hwclock" (string) +SystemManager.time.localtime_path = "/var/etc/localtime" (string) +SystemManager.time.ntpd_init = "/etc/init.d/S66ntp" (string) +SystemManager.time.ntpdate.arguments[0] = "-b" (string) +SystemManager.time.ntpdate.arguments[1] = "-t" (string) +SystemManager.time.ntpdate.arguments[2] = "3" (string) +SystemManager.time.ntpdate.arguments[3] = "0.north-america.pool.ntp.org" (string) +SystemManager.time.ntpdate.command = "/usr/bin/ntpdate" (string) +SystemManager.time.timezone_path = "/var/etc/timezone" (string) +SystemManager.time.zoneinfo_path = "/usr/share/zoneinfo" (string) +SystemManager.update.subsystems.@be/be.apply_method = "skill" (string) +SystemManager.update.subsystems.@be/be.default_order = 6 (int) +SystemManager.update.subsystems.@be/be.version_check = "skill" (string) +SystemManager.update.subsystems.fin-goods-test.apply_method = "skill" (string) +SystemManager.update.subsystems.fin-goods-test.default_order = 4 (int) +SystemManager.update.subsystems.fin-goods-test.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-diagnostics.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-diagnostics.default_order = 3 (int) +SystemManager.update.subsystems.jibo-diagnostics.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-rhino.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-rhino.default_order = 7 (int) +SystemManager.update.subsystems.jibo-rhino.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-tbd.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-tbd.default_order = 9 (int) +SystemManager.update.subsystems.jibo-tbd.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-trivia.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-trivia.default_order = 8 (int) +SystemManager.update.subsystems.jibo-trivia.version_check = "skill" (string) +SystemManager.update.subsystems.oobe-config.apply_method = "skill" (string) +SystemManager.update.subsystems.oobe-config.default_order = 5 (int) +SystemManager.update.subsystems.oobe-config.version_check = "skill" (string) +SystemManager.update.subsystems.os.apply_method = "system" (string) +SystemManager.update.subsystems.os.default_order = 1 (int) +SystemManager.update.subsystems.os.version_check = "os" (string) +SystemManager.update.subsystems.services.apply_method = "system" (string) +SystemManager.update.subsystems.services.default_order = 2 (int) +SystemManager.update.subsystems.services.version_check = "services" (string) +SystemManager.wifi.udhcpc.executable = "udhcpc" (string) +SystemManager.wifi.udhcpc.options = "-R -b -t 3 -T 5 -A 5" (string) +SystemManager.wifi.wpa.interface = "wlan0" (string) +SystemManager.wifi.wpa.monitor_interval = 1000 (int) +SystemManager.wifi.wpa.reconnect_interval = 15000 (int) +SystemManager.wifi.wpa.runtime = "/var/run/wpa_supplicant" (string) +WebCore.fileRoot = "/usr/local/var/www/system" (string) +WebCore.serverPort = 8585 (int) +logging.loggers.l4.level = "information" (string) +logging.loggers.l4.name = "SystemManager" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-system-monitoring-service.json + +Source in this workspace: `usr/local/etc/jibo-system-monitoring-service.json` + +```text +ErrorTracker.views[0].errors[0] = "LOW_ROBOT_STORAGE" (string) +ErrorTracker.views[0].name = "SystemMonitoringService" (string) +SystemMonitoringService.error.connection_timeout = 5000 (int) +SystemMonitoringService.error.polling_interval = 10000 (int) +SystemMonitoringService.health.connection_timeout = 30000 (int) +SystemMonitoringService.health.polling_interval = 1800000 (int) +SystemMonitoringService.health.upload.arguments[0] = "--credentials" (string) +SystemMonitoringService.health.upload.arguments[1] = "/var/jibo/credentials.json" (string) +SystemMonitoringService.health.upload.arguments[2] = "--kind" (string) +SystemMonitoringService.health.upload.arguments[3] = "HEALTH" (string) +SystemMonitoringService.health.upload.directory = "" (string) +SystemMonitoringService.health.upload.executable = "/usr/bin/jibo-log-client-async" (string) +SystemMonitoringService.registryPort = 8181 (int) +SystemMonitoringService.serverPort = 4111 (int) +SystemMonitoringService.storage.low_storage_byte = 1073741824 (int) +SystemMonitoringService.storage.mount_entries_file = "/proc/mounts" (string) +SystemMonitoringService.storage.polling_interval = 60000 (int) +SystemMonitoringService.storage.semantic.jibo = "/opt/jibo/Jibo" (string) +SystemMonitoringService.storage.semantic.knowledge = "/opt/jibo/Knowledge" (string) +SystemMonitoringService.storage.semantic.photos = "/opt/jibo/Photos" (string) +SystemMonitoringService.storage.semantic.recordings = "/opt/jibo/Recordings" (string) +SystemMonitoringService.storage.semantic.skills = "/opt/jibo/Skills" (string) +SystemMonitoringService.storage.semantic.tmp = "/tmp" (string) +WebCore.fileRoot = "/usr/local/var/www/systemMonitor" (string) +WebCore.serverPort = 4111 (int) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-test-capture-service.json + +Source in this workspace: `usr/local/etc/jibo-test-capture-service.json` + +```text +TestCaptureService.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +TestCaptureService.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +TestCaptureService.camera.cuda.devices[0].ae.gainP = 0.02 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinRatioThreshold = 0.01 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinSegmentedAvgYThreshold = 0.8 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinSegmentedTargetY = 0.5 (float) +TestCaptureService.camera.cuda.devices[0].ae.targetY = 0.6 (float) +TestCaptureService.camera.cuda.devices[0].awb.P = 0.15 (float) +TestCaptureService.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +TestCaptureService.camera.cuda.devices[0].awb.numSamples = 1000 (int) +TestCaptureService.camera.cuda.devices[0].awb.targetU = 0.505 (float) +TestCaptureService.camera.cuda.devices[0].awb.targetV = 0.5 (float) +TestCaptureService.camera.cuda.devices[0].bufferPoolSize = 4 (int) +TestCaptureService.camera.cuda.devices[0].enabled = true (bool) +TestCaptureService.camera.cuda.devices[0].gamma.B = 0.7 (float) +TestCaptureService.camera.cuda.devices[0].gamma.G = 0.7 (float) +TestCaptureService.camera.cuda.devices[0].gamma.R = 0.75 (float) +TestCaptureService.camera.cuda.devices[0].hFlip = true (bool) +TestCaptureService.camera.cuda.devices[0].height = 380 (int) +TestCaptureService.camera.cuda.devices[0].name = "Right Wide Eye" (string) +TestCaptureService.camera.cuda.devices[0].outputBufferFormats = 2 (int) +TestCaptureService.camera.cuda.devices[0].path = "/dev/video1" (string) +TestCaptureService.camera.cuda.devices[0].vFlip = true (bool) +TestCaptureService.camera.cuda.devices[0].width = 672 (int) +TestCaptureService.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +TestCaptureService.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +TestCaptureService.camera.cuda.devices[1].ae.gainP = 0.02 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinRatioThreshold = 0.01 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinSegmentedAvgYThreshold = 0.8 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinSegmentedTargetY = 0.5 (float) +TestCaptureService.camera.cuda.devices[1].ae.targetY = 0.6 (float) +TestCaptureService.camera.cuda.devices[1].awb.P = 0.15 (float) +TestCaptureService.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +TestCaptureService.camera.cuda.devices[1].awb.numSamples = 1000 (int) +TestCaptureService.camera.cuda.devices[1].awb.targetU = 0.505 (float) +TestCaptureService.camera.cuda.devices[1].awb.targetV = 0.5 (float) +TestCaptureService.camera.cuda.devices[1].bufferPoolSize = 4 (int) +TestCaptureService.camera.cuda.devices[1].enabled = true (bool) +TestCaptureService.camera.cuda.devices[1].gamma.B = 0.7 (float) +TestCaptureService.camera.cuda.devices[1].gamma.G = 0.7 (float) +TestCaptureService.camera.cuda.devices[1].gamma.R = 0.75 (float) +TestCaptureService.camera.cuda.devices[1].hFlip = true (bool) +TestCaptureService.camera.cuda.devices[1].height = 380 (int) +TestCaptureService.camera.cuda.devices[1].name = "Left Narrow Eye" (string) +TestCaptureService.camera.cuda.devices[1].outputBufferFormats = 2 (int) +TestCaptureService.camera.cuda.devices[1].path = "/dev/video0" (string) +TestCaptureService.camera.cuda.devices[1].vFlip = true (bool) +TestCaptureService.camera.cuda.devices[1].width = 672 (int) +TestCaptureService.camera.file.format = "YUV420p" (string) +TestCaptureService.camera.file.videos[0] = "videos/video-000/video.json" (string) +TestCaptureService.camera.file.videos[1] = "videos/video-001/video.json" (string) +TestCaptureService.camera.type = "CUDA" (string) +TestCaptureService.camera.v4l2.devices.left = "/dev/video0" (string) +TestCaptureService.camera.v4l2.devices.right = "/dev/video1" (string) +TestCaptureService.registryPort = 8181 (int) +TestCaptureService.serverPort = 7979 (int) +WebCore.fileRoot = "/usr/local/var/www/capture-tools" (string) +WebCore.serverPort = 7979 (int) +``` + +### /usr/local/etc/jibo-test-capture.json + +Source in this workspace: `usr/local/etc/jibo-test-capture.json` + +```text +test.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +test.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +test.camera.cuda.devices[0].ae.gainP = 0.02 (float) +test.camera.cuda.devices[0].ae.targetY = 0.25 (float) +test.camera.cuda.devices[0].awb.P = 0.15 (float) +test.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +test.camera.cuda.devices[0].awb.numSamples = 1000 (int) +test.camera.cuda.devices[0].awb.seed = 0 (int) +test.camera.cuda.devices[0].awb.targetU = 0.505 (float) +test.camera.cuda.devices[0].awb.targetV = 0.5 (float) +test.camera.cuda.devices[0].bufferPoolSize = 4 (int) +test.camera.cuda.devices[0].enabled = true (bool) +test.camera.cuda.devices[0].gamma.B = 0.6 (float) +test.camera.cuda.devices[0].gamma.G = 0.6 (float) +test.camera.cuda.devices[0].gamma.R = 0.6 (float) +test.camera.cuda.devices[0].hFlip = true (bool) +test.camera.cuda.devices[0].height = 720 (int) +test.camera.cuda.devices[0].name = "Right Wide Eye" (string) +test.camera.cuda.devices[0].outputBufferFormats = 0 (int) +test.camera.cuda.devices[0].path = "/dev/video1" (string) +test.camera.cuda.devices[0].vFlip = true (bool) +test.camera.cuda.devices[0].width = 1280 (int) +test.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +test.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +test.camera.cuda.devices[1].ae.gainP = 0.02 (float) +test.camera.cuda.devices[1].ae.targetY = 0.25 (float) +test.camera.cuda.devices[1].awb.P = 0.15 (float) +test.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +test.camera.cuda.devices[1].awb.numSamples = 1000 (int) +test.camera.cuda.devices[1].awb.seed = 0 (int) +test.camera.cuda.devices[1].awb.targetU = 0.505 (float) +test.camera.cuda.devices[1].awb.targetV = 0.5 (float) +test.camera.cuda.devices[1].bufferPoolSize = 4 (int) +test.camera.cuda.devices[1].enabled = true (bool) +test.camera.cuda.devices[1].gamma.B = 0.6 (float) +test.camera.cuda.devices[1].gamma.G = 0.6 (float) +test.camera.cuda.devices[1].gamma.R = 0.6 (float) +test.camera.cuda.devices[1].hFlip = true (bool) +test.camera.cuda.devices[1].height = 380 (int) +test.camera.cuda.devices[1].name = "Left Narrow Eye" (string) +test.camera.cuda.devices[1].outputBufferFormats = 0 (int) +test.camera.cuda.devices[1].path = "/dev/video0" (string) +test.camera.cuda.devices[1].vFlip = true (bool) +test.camera.cuda.devices[1].width = 672 (int) +test.camera.file.format = "YUV420p" (string) +test.camera.file.videos[0] = "videos/video-000/video.json" (string) +test.camera.file.videos[1] = "videos/video-001/video.json" (string) +test.camera.type = "CUDA" (string) +test.camera.v4l2.devices.left = "/dev/video0" (string) +test.camera.v4l2.devices.right = "/dev/video1" (string) +test.handler.ae_lock_count = 190 (int) +test.handler.awb_lock_count = 190 (int) +test.handler.display.enabled = true (bool) +test.handler.displayCycle.enabled = false (bool) +test.handler.fps.enabled = false (bool) +test.handler.max_exposure = 0.033 (float) +test.handler.min_exposure = 0.012 (float) +test.handler.num_frames = 0 (int) +test.handler.profiler.enabled = true (bool) +test.handler.record.directory = "/tmp/jibo-cap/" (string) +test.handler.record.enabled = false (bool) +test.handler.record.padding = 5 (int) +test.handler.record.skip_count = 180 (int) +test.handler.recordAxes.enabled = false (bool) +test.handler.recordAxes.padding = 5 (int) +test.handler.recordAxes.uri = "http://localhost:8282/axis_state" (string) +``` + +### /usr/local/etc/jibo-tts-service.json + +Source in this workspace: `usr/local/etc/jibo-tts-service.json` + +```text +PostFilterMap.affectionateSwitch = "affectionateAmount" (string) +PostFilterMap.ah = "6" (string) +PostFilterMap.aliasSwitch = "aliasAmount" (string) +PostFilterMap.analysisSwitch = "analysisSwitch" (string) +PostFilterMap.argh = "22" (string) +PostFilterMap.autotuneSwitch = "autotunePitch" (string) +PostFilterMap.aw = "16" (string) +PostFilterMap.chorusSwitch = "chorusAmount" (string) +PostFilterMap.cool = "9" (string) +PostFilterMap.disapproveSwitch = "disapproveAmount" (string) +PostFilterMap.done = "14" (string) +PostFilterMap.emphasisSwitch = "emphasisAmount" (string) +PostFilterMap.excitedSwitch = "excitedAmount" (string) +PostFilterMap.fadeSwitch = "fadeAmount" (string) +PostFilterMap.flangerSwitch = "flangerAmount" (string) +PostFilterMap.freqshiftSwitch = "freqshiftAmount" (string) +PostFilterMap.huh = "20" (string) +PostFilterMap.i_love_to_1 = "24" (string) +PostFilterMap.i_love_to_2 = "25" (string) +PostFilterMap.i_love_to_3 = "26" (string) +PostFilterMap.i_love_to_4 = "27" (string) +PostFilterMap.i_love_to_5 = "28" (string) +PostFilterMap.i_love_to_6 = "29" (string) +PostFilterMap.laugh = "11" (string) +PostFilterMap.laugh2 = "12" (string) +PostFilterMap.laughterSwitch = "laughterAmount" (string) +PostFilterMap.listSwitch = "listAmount" (string) +PostFilterMap.makeSimilar = "makeSimilar" (string) +PostFilterMap.masteringSwitch = "masteringAmount" (string) +PostFilterMap.my_bad = "17" (string) +PostFilterMap.neutralSwitch = "neutralAmount" (string) +PostFilterMap.nm_um = "23" (string) +PostFilterMap.oh = "7" (string) +PostFilterMap.ok = "4" (string) +PostFilterMap.oo = "1" (string) +PostFilterMap.ooo = "5" (string) +PostFilterMap.oops = "18" (string) +PostFilterMap.perfect = "3" (string) +PostFilterMap.phaserSwitch = "phaserAmount" (string) +PostFilterMap.pitchshiftSwitch = "pitchStrength" (string) +PostFilterMap.resonatorSwitch = "resonatorPitch" (string) +PostFilterMap.ringmodSwitch = "ringmodFreq" (string) +PostFilterMap.sorrowSwitch = "sorrowAmount" (string) +PostFilterMap.sweet = "13" (string) +PostFilterMap.triggerJibonics = "bang" (string) +PostFilterMap.um = "19" (string) +PostFilterMap.vocoderSwitch = "vocoderChord" (string) +PostFilterMap.what = "15" (string) +PostFilterMap.whoa = "21" (string) +PostFilterMap.woo_hoo_hoo = "10" (string) +PostFilterMap.worriedSwitch = "worriedAmount" (string) +PostFilterMap.wow = "2" (string) +PostFilterMap.your_welcome = "8" (string) +TTSService.alsaPlaybackDevice = "TTSOut" (string) +TTSService.audioDriver = "alsa" (string) +TTSService.effectsDir = "/usr/local/share/ttsservice/effects" (string) +TTSService.enableFadeOut = "FALSE" (string) +TTSService.enableJiboDefaultSwitch = "FALSE" (string) +TTSService.enablePD = "FALSE" (string) +TTSService.enableTextNorm = "TRUE" (string) +TTSService.frontEnd = "JIBO" (string) +TTSService.maxRSSMemory = 250000 (int) +TTSService.postToPerformanceService = "TRUE" (string) +TTSService.resourcePath = "/usr/local/share/ttsservice/voices/en_us_world/" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "TTSService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "warning" (string) +voiceParams.allPass_a = "0.76" (string) +voiceParams.buffer_size = "1024" (string) +voiceParams.fft_size = "1024" (string) +voiceParams.framerate_p = "240" (string) +voiceParams.frontendResource = "/usr/local/share/ttsservice/voices/en_us/griffin/fsts/" (string) +voiceParams.gvMCEP_jm = "0.9" (string) +voiceParams.halftone_fm = "3" (string) +voiceParams.maxChars = "1000" (string) +voiceParams.mgc_order = "60" (string) +voiceParams.mode = "text" (string) +voiceParams.outmode = "stream" (string) +voiceParams.pitchbw_jf = "0.40" (string) +voiceParams.postFilter_b = "0.40" (string) +voiceParams.samplerate_s = "48000" (string) +voiceParams.speed_r = "1" (string) +voiceParams.unvoicedvoice_u = "0.15" (string) +voiceParams.volume_linear = "0.65" (string) +webCore.fileRoot = "/usr/local/var/www/ttsservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8089 (int) +``` + +### /usr/local/etc/lps/cameras.json + +Source in this workspace: `usr/local/etc/lps/cameras.json` + +```text +controls[0].ae.ev = 0 (int) +controls[0].ae.lock = false (bool) +controls[0].ae.manual = false (bool) +controls[0].ae.manualExposure = 0.03333 (float) +controls[0].ae.manualGain = 1 (int) +controls[0].ae.manualMode = "default" (string) +controls[0].ae.targetY = 0.4 (float) +controls[0].ae.time.high = 0.033 (float) +controls[0].ae.time.low = 0.0016667 (float) +controls[0].awb.gammaBlue = 0.7 (float) +controls[0].awb.gammaCb = 0.78 (float) +controls[0].awb.gammaCr = 0.78 (float) +controls[0].awb.gammaGreen = 0.7 (float) +controls[0].awb.gammaRed = 0.7 (float) +controls[0].awb.lock = false (bool) +controls[0].awb.manual = false (bool) +controls[0].awb.manualBlueGain = 1024 (int) +controls[0].awb.manualGreenGain = 1024 (int) +controls[0].awb.manualRedGain = 1024 (int) +controls[0].hFlip = true (bool) +controls[0].height = 720 (int) +controls[0].outputBuffersConfIndex = 2 (int) +controls[0].vFlip = true (bool) +controls[0].width = 1280 (int) +controls[1].ae.ev = 0 (int) +controls[1].ae.lock = false (bool) +controls[1].ae.manual = false (bool) +controls[1].ae.manualExposure = 0.03333 (float) +controls[1].ae.manualGain = 1 (int) +controls[1].ae.manualMode = "default" (string) +controls[1].ae.targetY = 0.4 (float) +controls[1].ae.time.high = 0.033 (float) +controls[1].ae.time.low = 0.0016667 (float) +controls[1].awb.gammaBlue = 0.7 (float) +controls[1].awb.gammaCb = 0.78 (float) +controls[1].awb.gammaCr = 0.78 (float) +controls[1].awb.gammaGreen = 0.7 (float) +controls[1].awb.gammaRed = 0.7 (float) +controls[1].awb.lock = false (bool) +controls[1].awb.manual = false (bool) +controls[1].awb.manualBlueGain = 1024 (int) +controls[1].awb.manualGreenGain = 1024 (int) +controls[1].awb.manualRedGain = 1024 (int) +controls[1].hFlip = true (bool) +controls[1].height = 720 (int) +controls[1].outputBuffersConfIndex = 2 (int) +controls[1].vFlip = true (bool) +controls[1].width = 1280 (int) +cuda.devices[0].ae.avgYThreshold = 0.8 (float) +cuda.devices[0].ae.errorY = 0.0001 (float) +cuda.devices[0].ae.exposureP = 0.02 (float) +cuda.devices[0].ae.gainP = 0.02 (float) +cuda.devices[0].ae.numRegions = 64 (int) +cuda.devices[0].ae.numSamples = 1000 (int) +cuda.devices[0].ae.skinRatioThreshold = 0.01 (float) +cuda.devices[0].ae.skinSegmentedAvgYThreshold = 0.8 (float) +cuda.devices[0].ae.skinSegmentedTargetY = 0.43 (float) +cuda.devices[0].ae.targetY = 0.6 (float) +cuda.devices[0].awb.P = 0.15 (float) +cuda.devices[0].awb.grayThreshold = 0.3 (float) +cuda.devices[0].awb.numSamples = 1000 (int) +cuda.devices[0].awb.seed = 0 (int) +cuda.devices[0].awb.targetU = 0.505 (float) +cuda.devices[0].awb.targetV = 0.5 (float) +cuda.devices[0].bufferPoolSize = 10 (int) +cuda.devices[0].enabled = true (bool) +cuda.devices[0].gamma.B = 0.7 (float) +cuda.devices[0].gamma.G = 0.7 (float) +cuda.devices[0].gamma.R = 0.7 (float) +cuda.devices[0].hFlip = true (bool) +cuda.devices[0].height = 720 (int) +cuda.devices[0].name = "Camera-0" (string) +cuda.devices[0].numSamples = 10000 (int) +cuda.devices[0].outputBufferFormats = 2 (int) +cuda.devices[0].path = "/dev/video1" (string) +cuda.devices[0].vFlip = true (bool) +cuda.devices[0].width = 1280 (int) +cuda.devices[1].ae.avgYThreshold = 0.8 (float) +cuda.devices[1].ae.errorY = 0.0001 (float) +cuda.devices[1].ae.exposureP = 0.02 (float) +cuda.devices[1].ae.gainP = 0.02 (float) +cuda.devices[1].ae.numSamples = 1000 (int) +cuda.devices[1].ae.skinRatioThreshold = 0.01 (float) +cuda.devices[1].ae.skinSegmentedAvgYThreshold = 0.8 (float) +cuda.devices[1].ae.skinSegmentedTargetY = 0.46 (float) +cuda.devices[1].ae.targetY = 0.6 (float) +cuda.devices[1].awb.P = 0.15 (float) +cuda.devices[1].awb.grayThreshold = 0.3 (float) +cuda.devices[1].awb.numSamples = 1000 (int) +cuda.devices[1].awb.seed = 0 (int) +cuda.devices[1].awb.targetU = 0.505 (float) +cuda.devices[1].awb.targetV = 0.5 (float) +cuda.devices[1].bufferPoolSize = 4 (int) +cuda.devices[1].enabled = true (bool) +cuda.devices[1].gamma.B = 0.7 (float) +cuda.devices[1].gamma.G = 0.7 (float) +cuda.devices[1].gamma.R = 0.7 (float) +cuda.devices[1].hFlip = true (bool) +cuda.devices[1].height = 720 (int) +cuda.devices[1].name = "Camera-1" (string) +cuda.devices[1].numSamples = 10000 (int) +cuda.devices[1].outputBufferFormats = 2 (int) +cuda.devices[1].path = "/dev/video0" (string) +cuda.devices[1].vFlip = true (bool) +cuda.devices[1].width = 1280 (int) +file.format = "YUV420p" (string) +file.videos[0] = "videos/video-000/video.json" (string) +file.videos[1] = "videos/video-001/video.json" (string) +type = "CUDA" (string) +v4l2.devices.left = "/dev/video0" (string) +v4l2.devices.right = "/dev/video1" (string) +``` + +### /usr/local/etc/lps/entityConfig.json + +Source in this workspace: `usr/local/etc/lps/entityConfig.json` + +```text +default_motion.debug = false (bool) +default_motion.description = "motion" (string) +default_motion.is_static = false (bool) +default_motion.max_audio_measure_age = 0.1 (float) +default_motion.max_part_measure_age = 1.0 (float) +default_motion.max_track_age = 20.0 (float) +default_motion.motion.auto_add_tracker = false (bool) +default_motion.motion.auto_add_tracker_skip = 5 (int) +default_motion.motion.confidence_filter = 0.9 (float) +default_motion.motion.debug = false (bool) +default_motion.motion.default_ramge = 2.5 (float) +default_motion.motion.enable_back_projection = true (bool) +default_motion.motion.extent_x = 0.25 (float) +default_motion.motion.extent_y = 0.25 (float) +default_motion.motion.extent_z = 0.25 (float) +default_motion.motion.fixed_pseudo_range = 2.0 (float) +default_motion.motion.linear_psd = 0.1 (float) +default_motion.motion.min_state_covariance = 0.001 (float) +default_motion.motion.name = "motion" (string) +default_motion.motion.pose_filter = 0.0 (float) +default_motion.motion.pseudo_range_covariance = 0.5 (float) +default_motion.motion.tracker_1.image_tracker.base_covar = 200.0 (float) +default_motion.motion.tracker_1.image_tracker.debug = false (bool) +default_motion.motion.tracker_1.image_tracker.image_debug = false (bool) +default_motion.motion.tracker_1.image_tracker.image_height = 128 (int) +default_motion.motion.tracker_1.image_tracker.image_width = 128 (int) +default_motion.motion.tracker_1.image_tracker.measure_interval = 0.001 (float) +default_motion.motion.tracker_1.image_tracker.min_confidence = 0.001 (float) +default_motion.motion.tracker_1.image_tracker.model_confidence_filter = 0.5 (float) +default_motion.motion.tracker_1.image_tracker.name = "A" (string) +default_motion.motion.tracker_1.image_tracker.track_confidence_filter = 0.6 (float) +default_motion.motion.tracker_1.image_tracker.use_image_velocity = false (bool) +default_motion.motion.tracker_1.image_tracker.vel_filter = 0.75 (float) +default_motion.motion.tracker_1.image_tracker.vel_scale = 0.9 (float) +default_motion.motion.tracker_1.motion_tracker.background_threshold = 5 (int) +default_motion.motion.tracker_1.motion_tracker.camshift.area_aspect = 2.0 (float) +default_motion.motion.tracker_1.motion_tracker.camshift.area_scale = 3.0 (float) +default_motion.motion.tracker_1.motion_tracker.camshift.max_iterations = 6 (int) +default_motion.motion.tracker_1.motion_tracker.drop_area_too_big = 1600.0 (float) +default_motion.motion.tracker_1.motion_tracker.drop_area_too_small = 100.0 (float) +default_motion.motion.tracker_1.motion_tracker.search_size_horizontal_scale = 5 (int) +default_motion.motion.tracker_1.motion_tracker.search_size_vertical_scale = 5 (int) +default_motion.motion.tracker_1.tracker_class = "motion_tracker" (string) +default_motion.motion.tracker_type = "tracker_1" (string) +default_motion.motion.use_pseudo_range = true (bool) +default_motion.motion.vel_decay = 0.999 (float) +default_motion.motion.vel_limit = 3.0 (float) +default_motion.name = "motion" (string) +default_motion.out_fov_age_factor = 0.1 (float) +default_person.debug = false (bool) +default_person.description = "person" (string) +default_person.head.auto_add_tracker = false (bool) +default_person.head.auto_add_tracker_skip = 20 (int) +default_person.head.debug = false (bool) +default_person.head.default_ramge = 2.5 (float) +default_person.head.enable_back_projection = true (bool) +default_person.head.extent_x = 0.25 (float) +default_person.head.extent_y = 0.25 (float) +default_person.head.extent_z = 0.25 (float) +default_person.head.identity.alpha = 0.75 (float) +default_person.head.identity.cull = 0.1 (float) +default_person.head.linear_psd = 10.0 (float) +default_person.head.min_state_covariance = 0.0001 (float) +default_person.head.name = "head" (string) +default_person.head.pose_filter = 0.0 (float) +default_person.head.pseudo_range_covariance = 0.9 (float) +default_person.head.tracker_1.color_tracker.area_filter = 0.6 (float) +default_person.head.tracker_1.color_tracker.camshift.area_aspect = 1.2 (float) +default_person.head.tracker_1.color_tracker.camshift.area_scale = 10.0 (float) +default_person.head.tracker_1.color_tracker.camshift.max_iterations = 6 (int) +default_person.head.tracker_1.color_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_1.color_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_1.color_tracker.kmeans.K = 2 (int) +default_person.head.tracker_1.color_tracker.kmeans.convergence = 0.01 (float) +default_person.head.tracker_1.color_tracker.kmeans.max_iterations = 10 (int) +default_person.head.tracker_1.color_tracker.model.color_threshold_max = 25 (int) +default_person.head.tracker_1.color_tracker.model.color_threshold_min = 10 (int) +default_person.head.tracker_1.color_tracker.model.y_max = 250 (int) +default_person.head.tracker_1.color_tracker.model.y_min = 25 (int) +default_person.head.tracker_1.color_tracker.model_debug = false (bool) +default_person.head.tracker_1.color_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_1.color_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_1.color_tracker.track_debug = false (bool) +default_person.head.tracker_1.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_1.image_tracker.debug = false (bool) +default_person.head.tracker_1.image_tracker.image_debug = false (bool) +default_person.head.tracker_1.image_tracker.image_height = 360 (int) +default_person.head.tracker_1.image_tracker.image_width = 640 (int) +default_person.head.tracker_1.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_1.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_1.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_1.image_tracker.name = "A" (string) +default_person.head.tracker_1.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_1.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_1.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_1.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_1.tracker_class = "color_tracker" (string) +default_person.head.tracker_2.abcshift_tracker.area_aspect = 1.2 (float) +default_person.head.tracker_2.abcshift_tracker.area_filter = 0.6 (float) +default_person.head.tracker_2.abcshift_tracker.area_scale = 1.3 (float) +default_person.head.tracker_2.abcshift_tracker.background.binsX = 256 (int) +default_person.head.tracker_2.abcshift_tracker.background.binsY = 256 (int) +default_person.head.tracker_2.abcshift_tracker.background.maxX = 255 (int) +default_person.head.tracker_2.abcshift_tracker.background.maxY = 255 (int) +default_person.head.tracker_2.abcshift_tracker.background.minX = 0 (int) +default_person.head.tracker_2.abcshift_tracker.background.minY = 0 (int) +default_person.head.tracker_2.abcshift_tracker.bhattacharyya_threshold = 0.5 (float) +default_person.head.tracker_2.abcshift_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_2.abcshift_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_2.abcshift_tracker.foreground.binsX = 256 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.binsY = 256 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.maxX = 255 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.maxY = 255 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.minX = 0 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.minY = 0 (int) +default_person.head.tracker_2.abcshift_tracker.max_iterations = 6 (int) +default_person.head.tracker_2.abcshift_tracker.model.color_threshold_max = 10 (int) +default_person.head.tracker_2.abcshift_tracker.model.color_threshold_min = 5 (int) +default_person.head.tracker_2.abcshift_tracker.model.y_max = 250 (int) +default_person.head.tracker_2.abcshift_tracker.model.y_min = 5 (int) +default_person.head.tracker_2.abcshift_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_2.abcshift_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_2.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_2.image_tracker.debug = false (bool) +default_person.head.tracker_2.image_tracker.image_debug = false (bool) +default_person.head.tracker_2.image_tracker.image_height = 360 (int) +default_person.head.tracker_2.image_tracker.image_width = 640 (int) +default_person.head.tracker_2.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_2.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_2.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_2.image_tracker.name = "A" (string) +default_person.head.tracker_2.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_2.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_2.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_2.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_2.tracker_class = "abcshift_tracker" (string) +default_person.head.tracker_3.correlation_tracker.filter_size = 6 (int) +default_person.head.tracker_3.correlation_tracker.nu_scale = 0.025 (float) +default_person.head.tracker_3.correlation_tracker.nu_space = 0.025 (float) +default_person.head.tracker_3.correlation_tracker.num_scale_levels = 5 (int) +default_person.head.tracker_3.correlation_tracker.regularizer_scale = 0.001 (float) +default_person.head.tracker_3.correlation_tracker.regularizer_space = 0.001 (float) +default_person.head.tracker_3.correlation_tracker.scale_pyramid_alpha = 1.02 (float) +default_person.head.tracker_3.correlation_tracker.scale_window_size = 23 (int) +default_person.head.tracker_3.correlation_tracker.side_lobe_ratio_threshold = 12.0 (float) +default_person.head.tracker_3.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_3.image_tracker.debug = false (bool) +default_person.head.tracker_3.image_tracker.image_debug = false (bool) +default_person.head.tracker_3.image_tracker.image_height = 360 (int) +default_person.head.tracker_3.image_tracker.image_width = 640 (int) +default_person.head.tracker_3.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_3.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_3.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_3.image_tracker.name = "A" (string) +default_person.head.tracker_3.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_3.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_3.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_3.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_3.tracker_class = "correlation_tracker" (string) +default_person.head.tracker_4.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_4.image_tracker.debug = false (bool) +default_person.head.tracker_4.image_tracker.image_debug = false (bool) +default_person.head.tracker_4.image_tracker.image_height = 360 (int) +default_person.head.tracker_4.image_tracker.image_width = 640 (int) +default_person.head.tracker_4.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_4.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_4.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_4.image_tracker.name = "A" (string) +default_person.head.tracker_4.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_4.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_4.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_4.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_4.tracker_class = "face_landmark_tracker" (string) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_aspect = 1.2 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_filter = 0.6 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_scale = 1.3 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.binsX = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.binsY = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.maxX = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.maxY = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.minX = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.minY = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.bhattacharyya_threshold = 0.5 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.binsX = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.binsY = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.maxX = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.maxY = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.minX = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.minY = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.max_iterations = 6 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.color_threshold_max = 25 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.color_threshold_min = 5 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.y_max = 250 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.y_min = 5 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.debug = false (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_debug = false (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_height = 360 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_width = 640 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.name = "A" (string) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.tracker_class = "abcshift_tracker" (string) +default_person.head.tracker_5.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_5.image_tracker.debug = false (bool) +default_person.head.tracker_5.image_tracker.image_debug = false (bool) +default_person.head.tracker_5.image_tracker.image_height = 720 (int) +default_person.head.tracker_5.image_tracker.image_width = 1280 (int) +default_person.head.tracker_5.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_5.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_5.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_5.image_tracker.name = "A" (string) +default_person.head.tracker_5.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_5.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_5.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_5.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_5.tracker_class = "composite_tracker" (string) +default_person.head.tracker_type = "tracker_2" (string) +default_person.head.use_pseudo_range = true (bool) +default_person.head.vel_decay = 0.5 (float) +default_person.head.vel_max = 1.9 (float) +default_person.in_fov_margin = 0.1 (float) +default_person.is_static = false (bool) +default_person.max_audio_measure_age = 10.0 (float) +default_person.max_part_measure_age = 5.0 (float) +default_person.max_track_age = 300.0 (float) +default_person.min_audio_confidence = 0.4 (float) +default_person.min_detect_request_age = 5.0 (float) +default_person.min_part_confidence = 0.001 (float) +default_person.name = "person" (string) +default_person.out_fov_age_factor = 1.5 (float) +default_person.speaking_threshold = 0.25 (float) +default_person.speaking_timeout = 1.5 (float) +``` + +### /usr/local/etc/lps/schemas/focused.json + +Source in this workspace: `usr/local/etc/lps/schemas/focused.json` + +```text +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "FaceDetectAction" (string) +schemas[0].actions[0].policy_detector.criteria.cameraIds[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].height = 360 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].width = 640 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].height = 45 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].width = 80 (int) +schemas[0].actions[0].policy_detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].policy_detector.criteria.formats[1] = 1 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[1] = 2 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_height = 40 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_width = 40 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].kind = "skincolor" (string) +schemas[0].actions[0].policy_detector.policies[0].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].weight = 0.75 (float) +schemas[0].actions[0].policy_detector.policies[1].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].kind = "gaussian" (string) +schemas[0].actions[0].policy_detector.policies[1].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].weight = 0.25 (float) +schemas[0].actions[0].type = "face_detection_action" (string) +schemas[0].actions[1].enable = true (bool) +schemas[0].actions[1].max_tracked = 1 (int) +schemas[0].actions[1].name = "FaceTrackerInitAction" (string) +schemas[0].actions[1].type = "face_tracker_init_action" (string) +schemas[0].actions[2].enable = true (bool) +schemas[0].actions[2].name = "FaceRecognitionAction" (string) +schemas[0].actions[2].turn_threshold = 0.5 (float) +schemas[0].actions[2].type = "face_recognition_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "FaceDetectSchema" (string) +schemas[0].predicate.criteria.cameraIds[0] = 0 (int) +schemas[0].predicate.enable = true (bool) +schemas[0].predicate.skip_with_tracks = 150 (int) +schemas[0].predicate.skip_without_tracks = 10 (int) +schemas[0].predicate.start = 0 (int) +schemas[0].predicate.type = "face_detection_predicate" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "FaceTrackerUpdate" (string) +schemas[1].actions[0].type = "face_tracker_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "FaceTrackSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].criteria.formats[0] = 3 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[2].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.min_hint_height = 80 (int) +schemas[2].actions[0].detector.min_hint_width = 80 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].hflip = true (bool) +schemas[2].actions[0].name = "FaceTrackerPoseEstimate" (string) +schemas[2].actions[0].type = "face_tracker_pose_estimate_action" (string) +schemas[2].actions[0].vflip = false (bool) +schemas[2].enable = false (bool) +schemas[2].name = "FaceTrackPoseEstimateSchema" (string) +schemas[2].predicate.enable = true (bool) +schemas[2].predicate.skip = 11 (int) +schemas[2].predicate.start = 4 (int) +schemas[2].predicate.type = "face_tracker_pose_estimate_predicate" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[3].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[3].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[3].actions[0].detector.min_hint_height = 80 (int) +schemas[3].actions[0].detector.min_hint_width = 80 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "FaceTrackerRedetectAction" (string) +schemas[3].actions[0].type = "face_tracker_redetect_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "FaceTrackReevaluateSchema" (string) +schemas[3].predicate.enable = true (bool) +schemas[3].predicate.skip = 89 (int) +schemas[3].predicate.start = 0 (int) +schemas[3].predicate.type = "face_reevaluate_predicate" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[4].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[4].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[4].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].name = "FaceTrainingAction" (string) +schemas[4].actions[0].type = "face_training_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "FaceTrainSchema" (string) +schemas[4].predicate.criteria.cameraIds[0] = 0 (int) +schemas[4].predicate.enable = true (bool) +schemas[4].predicate.type = "face_training_predicate" (string) +schemas[4].type = "image_update_schema" (string) +schemas[5].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[5].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[5].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[5].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "EntityDetailAction" (string) +schemas[5].actions[0].type = "entity_detail_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "EntityDetailSchema" (string) +schemas[5].type = "image_update_schema" (string) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[6].actions[0].type = "visual_awareness_update_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "VisualAwarenessSchema" (string) +schemas[6].type = "image_update_schema" (string) +schemas[7].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[7].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[7].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[7].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].name = "BarcodeRequestAction" (string) +schemas[7].actions[0].reader.types.CODE128 = false (bool) +schemas[7].actions[0].reader.types.CODE39 = false (bool) +schemas[7].actions[0].reader.types.EAN13 = false (bool) +schemas[7].actions[0].reader.types.EAN8 = false (bool) +schemas[7].actions[0].reader.types.I25 = false (bool) +schemas[7].actions[0].reader.types.ISBN10 = false (bool) +schemas[7].actions[0].reader.types.ISBN13 = false (bool) +schemas[7].actions[0].reader.types.PDF417 = false (bool) +schemas[7].actions[0].reader.types.QRCODE = true (bool) +schemas[7].actions[0].reader.types.UPCA = false (bool) +schemas[7].actions[0].reader.types.UPCE = false (bool) +schemas[7].actions[0].type = "barcode_request_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "BarcodeSchema" (string) +schemas[7].type = "image_update_schema" (string) +schemas[8].actions[0].defaultResetTimeout = 7000 (int) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "ControlChangeRequestAction" (string) +schemas[8].actions[0].type = "control_change_request_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "ControlChangeSchema" (string) +schemas[8].type = "image_update_schema" (string) +schemas[9].actions[0].accumulator_alpha = 0.75 (float) +schemas[9].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[9].actions[0].criteria.dimensions[0].height = 180 (int) +schemas[9].actions[0].criteria.dimensions[0].width = 320 (int) +schemas[9].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].image_height = 128 (int) +schemas[9].actions[0].image_width = 128 (int) +schemas[9].actions[0].motion_timeout = 100 (int) +schemas[9].actions[0].moving_delay = 400 (int) +schemas[9].actions[0].name = "MotionImagerAction" (string) +schemas[9].actions[0].type = "motion_imager_action" (string) +schemas[9].actions[1].detector.criteria.cameraIds[0] = 0 (int) +schemas[9].actions[1].detector.min_height = 10 (int) +schemas[9].actions[1].detector.min_width = 10 (int) +schemas[9].actions[1].detector.threshold.ae.gain = 16.0 (float) +schemas[9].actions[1].detector.threshold.ae.time = 0.0333 (float) +schemas[9].actions[1].detector.threshold.awb.blue = 4.0 (float) +schemas[9].actions[1].detector.threshold.awb.green = 4.0 (float) +schemas[9].actions[1].detector.threshold.awb.red = 4.0 (float) +schemas[9].actions[1].detector.threshold.dynamic = true (bool) +schemas[9].actions[1].detector.threshold.high = 50 (int) +schemas[9].actions[1].detector.threshold.low = 5 (int) +schemas[9].actions[1].enable = true (bool) +schemas[9].actions[1].moving_delay = 400 (int) +schemas[9].actions[1].name = "MotionDetectionAction" (string) +schemas[9].actions[1].type = "motion_detection_action" (string) +schemas[9].actions[2].enable = true (bool) +schemas[9].actions[2].max_tracked = 2 (int) +schemas[9].actions[2].moving_delay = 400 (int) +schemas[9].actions[2].name = "MotionTrackerInitAction" (string) +schemas[9].actions[2].pool.format = 1 (int) +schemas[9].actions[2].pool.height = 128 (int) +schemas[9].actions[2].pool.size = 8 (int) +schemas[9].actions[2].pool.width = 128 (int) +schemas[9].actions[2].type = "motion_tracker_init_action" (string) +schemas[9].actions[3].enable = true (bool) +schemas[9].actions[3].moving_delay = 400 (int) +schemas[9].actions[3].name = "MotionTrackerUpdateAction" (string) +schemas[9].actions[3].pool.format = 1 (int) +schemas[9].actions[3].pool.height = 128 (int) +schemas[9].actions[3].pool.size = 8 (int) +schemas[9].actions[3].pool.width = 128 (int) +schemas[9].actions[3].type = "motion_tracker_update_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "MotionSchema" (string) +schemas[9].type = "image_update_schema" (string) +schemas[10].actions[0].ceiling_height = 2.0 (float) +schemas[10].actions[0].drop_radius = 0.3 (float) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].fence_radius = 4.0 (float) +schemas[10].actions[0].floor_height = -2.0 (float) +schemas[10].actions[0].name = "FaceTimeAction" (string) +schemas[10].actions[0].type = "face_time_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "FaceTimeSchema" (string) +schemas[10].type = "time_update_schema" (string) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].name = "PersonEvaluationAction" (string) +schemas[11].actions[0].not_trained_age_limit = 20.0 (float) +schemas[11].actions[0].refresh_limit = 50.0 (float) +schemas[11].actions[0].type = "person_evaluation_action" (string) +schemas[11].actions[0].unknown_age_limit = 1.5 (float) +schemas[11].actions[1].enable = true (bool) +schemas[11].actions[1].name = "PresenceTimeAction" (string) +schemas[11].actions[1].type = "presence_time_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "FaceEvaluateTimeSchema" (string) +schemas[11].predicate.enable = true (bool) +schemas[11].predicate.min_period = 1.1 (float) +schemas[11].predicate.type = "min_period_predicate" (string) +schemas[11].type = "time_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].expiration = 60000 (int) +schemas[12].actions[0].name = "SpeakerTimeAction" (string) +schemas[12].actions[0].type = "speaker_time_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "SpeakerTimeSchema" (string) +schemas[12].type = "time_update_schema" (string) +schemas[13].actions[0].enable = true (bool) +schemas[13].actions[0].name = "AwarenessTimeAction" (string) +schemas[13].actions[0].type = "awareness_time_action" (string) +schemas[13].enable = true (bool) +schemas[13].name = "AwarenessTimeSchema" (string) +schemas[13].type = "time_update_schema" (string) +schemas[14].actions[0].drop_radius = 0.3 (float) +schemas[14].actions[0].enable = true (bool) +schemas[14].actions[0].fence_radius = 4.0 (float) +schemas[14].actions[0].name = "MotionTimeAction" (string) +schemas[14].actions[0].type = "motion_time_action" (string) +schemas[14].enable = true (bool) +schemas[14].name = "MotionTimeSchema" (string) +schemas[14].type = "time_update_schema" (string) +schemas[15].actions[0].enable = true (bool) +schemas[15].actions[0].event_timeout = 5.0 (float) +schemas[15].actions[0].name = "AudioTimeAction" (string) +schemas[15].actions[0].type = "audio_time_action" (string) +schemas[15].enable = true (bool) +schemas[15].name = "AudioTimeSchema" (string) +schemas[15].type = "time_update_schema" (string) +schemas[16].actions[0].enable = true (bool) +schemas[16].actions[0].name = "PresenceTimeAction" (string) +schemas[16].actions[0].type = "presence_time_action" (string) +schemas[16].enable = true (bool) +schemas[16].name = "PresenceTimeSchema" (string) +schemas[16].type = "time_update_schema" (string) +schemas[17].actions[0].enable = true (bool) +schemas[17].actions[0].name = "AudioDetectionAction" (string) +schemas[17].actions[0].type = "audio_detection_action" (string) +schemas[17].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[17].actions[1].audio_time_tolerance = 0.35 (float) +schemas[17].actions[1].enable = true (bool) +schemas[17].actions[1].in_fov_margin = 0.1 (float) +schemas[17].actions[1].name = "AudioMeasurementAction" (string) +schemas[17].actions[1].type = "audio_measurement_action" (string) +schemas[17].enable = true (bool) +schemas[17].name = "AudioDetectSchema" (string) +schemas[17].type = "audio_update_schema" (string) +schemas[18].actions[0].enable = true (bool) +schemas[18].actions[0].name = "AudioAwarenessAction" (string) +schemas[18].actions[0].type = "audio_awareness_action" (string) +schemas[18].enable = true (bool) +schemas[18].name = "AudioAwarenessSchema" (string) +schemas[18].type = "audio_update_schema" (string) +schemas[19].actions[0].enable = true (bool) +schemas[19].actions[0].name = "GeometryUpdateAction" (string) +schemas[19].actions[0].type = "geometry_update_action" (string) +schemas[19].actions[1].enable = true (bool) +schemas[19].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[19].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[19].enable = true (bool) +schemas[19].name = "AxisUpdateSchema" (string) +schemas[19].type = "axis_update_schema" (string) +``` + +### /usr/local/etc/lps/schemas/minimal.json + +Source in this workspace: `usr/local/etc/lps/schemas/minimal.json` + +```text +schemas[0].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[0].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[0].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "EntityDetailAction" (string) +schemas[0].actions[0].type = "entity_detail_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "EntityDetailSchema" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[1].actions[0].type = "visual_awareness_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "VisualAwarenessSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].name = "BarcodeRequestAction" (string) +schemas[2].actions[0].reader.types.CODE128 = false (bool) +schemas[2].actions[0].reader.types.CODE39 = false (bool) +schemas[2].actions[0].reader.types.EAN13 = false (bool) +schemas[2].actions[0].reader.types.EAN8 = false (bool) +schemas[2].actions[0].reader.types.I25 = false (bool) +schemas[2].actions[0].reader.types.ISBN10 = false (bool) +schemas[2].actions[0].reader.types.ISBN13 = false (bool) +schemas[2].actions[0].reader.types.PDF417 = false (bool) +schemas[2].actions[0].reader.types.QRCODE = true (bool) +schemas[2].actions[0].reader.types.UPCA = false (bool) +schemas[2].actions[0].reader.types.UPCE = false (bool) +schemas[2].actions[0].type = "barcode_request_action" (string) +schemas[2].enable = true (bool) +schemas[2].name = "BarcodeSchema" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].defaultResetTimeout = 7000 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "ControlChangeRequestAction" (string) +schemas[3].actions[0].type = "control_change_request_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "ControlChangeSchema" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].ceiling_height = 2.0 (float) +schemas[4].actions[0].drop_radius = 0.3 (float) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].fence_radius = 4.0 (float) +schemas[4].actions[0].floor_height = -2.0 (float) +schemas[4].actions[0].name = "FaceTimeAction" (string) +schemas[4].actions[0].type = "face_time_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "FaceTimeSchema" (string) +schemas[4].type = "time_update_schema" (string) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "AwarenessTimeAction" (string) +schemas[5].actions[0].type = "awareness_time_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "AwarenessTimeSchema" (string) +schemas[5].type = "time_update_schema" (string) +schemas[6].actions[0].drop_radius = 0.3 (float) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].fence_radius = 4.0 (float) +schemas[6].actions[0].name = "MotionTimeAction" (string) +schemas[6].actions[0].type = "motion_time_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "MotionTimeSchema" (string) +schemas[6].type = "time_update_schema" (string) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].event_timeout = 5.0 (float) +schemas[7].actions[0].name = "AudioTimeAction" (string) +schemas[7].actions[0].type = "audio_time_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "AudioTimeSchema" (string) +schemas[7].type = "time_update_schema" (string) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "PresenceTimeAction" (string) +schemas[8].actions[0].type = "presence_time_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "PresenceTimeSchema" (string) +schemas[8].type = "time_update_schema" (string) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].name = "AudioDetectionAction" (string) +schemas[9].actions[0].type = "audio_detection_action" (string) +schemas[9].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[9].actions[1].audio_time_tolerance = 0.35 (float) +schemas[9].actions[1].enable = true (bool) +schemas[9].actions[1].in_fov_margin = 0.1 (float) +schemas[9].actions[1].name = "AudioMeasurementAction" (string) +schemas[9].actions[1].type = "audio_measurement_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "AudioDetectSchema" (string) +schemas[9].type = "audio_update_schema" (string) +schemas[10].actions[0].audio_angle_tolerance = 0.5 (float) +schemas[10].actions[0].audio_time_tolerance = 0.35 (float) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].in_fov_margin = 0.1 (float) +schemas[10].actions[0].name = "SpeakerPresenceAudioAction" (string) +schemas[10].actions[0].presence_timeout = 10.0 (float) +schemas[10].actions[0].type = "speaker_presence_audio_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "AudioPresenceSchema" (string) +schemas[10].type = "audio_update_schema" (string) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].name = "AudioAwarenessAction" (string) +schemas[11].actions[0].type = "audio_awareness_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "AudioAwarenessSchema" (string) +schemas[11].type = "audio_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].name = "GeometryUpdateAction" (string) +schemas[12].actions[0].type = "geometry_update_action" (string) +schemas[12].actions[1].enable = true (bool) +schemas[12].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[12].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "AxisUpdateSchema" (string) +schemas[12].type = "axis_update_schema" (string) +``` + +### /usr/local/etc/lps/schemas/normal.json + +Source in this workspace: `usr/local/etc/lps/schemas/normal.json` + +```text +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "FaceDetectAction" (string) +schemas[0].actions[0].policy_detector.criteria.cameraIds[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].height = 720 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].width = 1280 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].height = 45 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].width = 80 (int) +schemas[0].actions[0].policy_detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].policy_detector.criteria.formats[1] = 1 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[1] = 2 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_height = 40 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_width = 40 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].kind = "skincolor" (string) +schemas[0].actions[0].policy_detector.policies[0].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].weight = 0.75 (float) +schemas[0].actions[0].policy_detector.policies[1].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].kind = "gaussian" (string) +schemas[0].actions[0].policy_detector.policies[1].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].weight = 0.25 (float) +schemas[0].actions[0].type = "face_detection_action" (string) +schemas[0].actions[1].enable = true (bool) +schemas[0].actions[1].max_tracked = 3 (int) +schemas[0].actions[1].name = "FaceTrackerInitAction" (string) +schemas[0].actions[1].type = "face_tracker_init_action" (string) +schemas[0].actions[2].criteria.cameraIds[0] = 0 (int) +schemas[0].actions[2].criteria.dimensions[0].height = 720 (int) +schemas[0].actions[2].criteria.dimensions[0].width = 1280 (int) +schemas[0].actions[2].criteria.formats[0] = 3 (int) +schemas[0].actions[2].criteria.outputTypes[0] = 0 (int) +schemas[0].actions[2].enable = true (bool) +schemas[0].actions[2].name = "FaceTrackerIDAction" (string) +schemas[0].actions[2].type = "face_tracker_id_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "FaceDetectSchema" (string) +schemas[0].predicate.criteria.cameraIds[0] = 0 (int) +schemas[0].predicate.enable = true (bool) +schemas[0].predicate.skip_with_tracks = 30 (int) +schemas[0].predicate.skip_without_tracks = 10 (int) +schemas[0].predicate.start = 0 (int) +schemas[0].predicate.type = "face_detection_predicate" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "FaceTrackerUpdate" (string) +schemas[1].actions[0].type = "face_tracker_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "FaceTrackSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].criteria.formats[0] = 3 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[2].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.min_hint_height = 80 (int) +schemas[2].actions[0].detector.min_hint_width = 80 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].hflip = true (bool) +schemas[2].actions[0].name = "FaceTrackerPoseEstimate" (string) +schemas[2].actions[0].type = "face_tracker_pose_estimate_action" (string) +schemas[2].actions[0].vflip = false (bool) +schemas[2].enable = false (bool) +schemas[2].name = "FaceTrackPoseEstimateSchema" (string) +schemas[2].predicate.enable = true (bool) +schemas[2].predicate.skip = 11 (int) +schemas[2].predicate.start = 4 (int) +schemas[2].predicate.type = "face_tracker_pose_estimate_predicate" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].height = 720 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].width = 1280 (int) +schemas[3].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[3].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[3].actions[0].detector.min_hint_height = 80 (int) +schemas[3].actions[0].detector.min_hint_width = 80 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "PersonRedetectAction" (string) +schemas[3].actions[0].type = "person_redetect_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "FaceTrackRedetectSchema" (string) +schemas[3].predicate.enable = true (bool) +schemas[3].predicate.skip = 3 (int) +schemas[3].predicate.start = 0 (int) +schemas[3].predicate.type = "face_reevaluate_predicate" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[4].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[4].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[4].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[4].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[4].actions[0].detector.min_hint_height = 80 (int) +schemas[4].actions[0].detector.min_hint_width = 80 (int) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].max_tracked = 3 (int) +schemas[4].actions[0].name = "DeferredDetectionAction" (string) +schemas[4].actions[0].type = "deferred_detection_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "DeferredDetectSchema" (string) +schemas[4].type = "image_update_schema" (string) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "FaceTrainingAction" (string) +schemas[5].actions[0].type = "face_training_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "FaceTrainSchema" (string) +schemas[5].predicate.enable = true (bool) +schemas[5].predicate.type = "face_training_predicate" (string) +schemas[5].type = "image_update_schema" (string) +schemas[6].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[6].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[6].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[6].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].name = "EntityDetailAction" (string) +schemas[6].actions[0].type = "entity_detail_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "EntityDetailSchema" (string) +schemas[6].type = "image_update_schema" (string) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[7].actions[0].type = "visual_awareness_update_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "VisualAwarenessSchema" (string) +schemas[7].type = "image_update_schema" (string) +schemas[8].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[8].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[8].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[8].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "BarcodeRequestAction" (string) +schemas[8].actions[0].reader.types.CODE128 = false (bool) +schemas[8].actions[0].reader.types.CODE39 = false (bool) +schemas[8].actions[0].reader.types.EAN13 = false (bool) +schemas[8].actions[0].reader.types.EAN8 = false (bool) +schemas[8].actions[0].reader.types.I25 = false (bool) +schemas[8].actions[0].reader.types.ISBN10 = false (bool) +schemas[8].actions[0].reader.types.ISBN13 = false (bool) +schemas[8].actions[0].reader.types.PDF417 = false (bool) +schemas[8].actions[0].reader.types.QRCODE = true (bool) +schemas[8].actions[0].reader.types.UPCA = false (bool) +schemas[8].actions[0].reader.types.UPCE = false (bool) +schemas[8].actions[0].type = "barcode_request_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "BarcodeSchema" (string) +schemas[8].type = "image_update_schema" (string) +schemas[9].actions[0].defaultResetTimeout = 7000 (int) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].name = "ControlChangeRequestAction" (string) +schemas[9].actions[0].type = "control_change_request_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "ControlChangeSchema" (string) +schemas[9].type = "image_update_schema" (string) +schemas[10].actions[0].accumulator_alpha = 0.75 (float) +schemas[10].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[10].actions[0].criteria.dimensions[0].height = 180 (int) +schemas[10].actions[0].criteria.dimensions[0].width = 320 (int) +schemas[10].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].image_height = 128 (int) +schemas[10].actions[0].image_width = 128 (int) +schemas[10].actions[0].motion_timeout = 100 (int) +schemas[10].actions[0].moving_delay = 400 (int) +schemas[10].actions[0].name = "MotionImagerAction" (string) +schemas[10].actions[0].type = "motion_imager_action" (string) +schemas[10].actions[1].detector.criteria.cameraIds[0] = 0 (int) +schemas[10].actions[1].detector.min_height = 10 (int) +schemas[10].actions[1].detector.min_width = 10 (int) +schemas[10].actions[1].detector.threshold.ae.gain = 16.0 (float) +schemas[10].actions[1].detector.threshold.ae.time = 0.0333 (float) +schemas[10].actions[1].detector.threshold.awb.blue = 4.0 (float) +schemas[10].actions[1].detector.threshold.awb.green = 4.0 (float) +schemas[10].actions[1].detector.threshold.awb.red = 4.0 (float) +schemas[10].actions[1].detector.threshold.dynamic = true (bool) +schemas[10].actions[1].detector.threshold.high = 50 (int) +schemas[10].actions[1].detector.threshold.low = 5 (int) +schemas[10].actions[1].enable = true (bool) +schemas[10].actions[1].moving_delay = 400 (int) +schemas[10].actions[1].name = "MotionDetectionAction" (string) +schemas[10].actions[1].type = "motion_detection_action" (string) +schemas[10].actions[2].enable = true (bool) +schemas[10].actions[2].max_tracked = 3 (int) +schemas[10].actions[2].moving_delay = 400 (int) +schemas[10].actions[2].name = "MotionTrackerInitAction" (string) +schemas[10].actions[2].pool.format = 1 (int) +schemas[10].actions[2].pool.height = 128 (int) +schemas[10].actions[2].pool.size = 8 (int) +schemas[10].actions[2].pool.width = 128 (int) +schemas[10].actions[2].type = "motion_tracker_init_action" (string) +schemas[10].actions[3].enable = true (bool) +schemas[10].actions[3].moving_delay = 400 (int) +schemas[10].actions[3].name = "MotionTrackerUpdateAction" (string) +schemas[10].actions[3].pool.format = 1 (int) +schemas[10].actions[3].pool.height = 128 (int) +schemas[10].actions[3].pool.size = 8 (int) +schemas[10].actions[3].pool.width = 128 (int) +schemas[10].actions[3].type = "motion_tracker_update_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "MotionSchema" (string) +schemas[10].type = "image_update_schema" (string) +schemas[11].actions[0].ceiling_height = 2.0 (float) +schemas[11].actions[0].drop_radius = 0.3 (float) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].fence_radius = 4.0 (float) +schemas[11].actions[0].floor_height = -2.0 (float) +schemas[11].actions[0].name = "FaceTimeAction" (string) +schemas[11].actions[0].type = "face_time_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "FaceTimeSchema" (string) +schemas[11].type = "time_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].name = "PersonEvaluationAction" (string) +schemas[12].actions[0].not_trained_age_limit = 20.0 (float) +schemas[12].actions[0].refresh_limit = 50.0 (float) +schemas[12].actions[0].type = "person_evaluation_action" (string) +schemas[12].actions[0].unknown_age_limit = 10.0 (float) +schemas[12].actions[1].enable = true (bool) +schemas[12].actions[1].name = "PresenceTimeAction" (string) +schemas[12].actions[1].type = "presence_time_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "FaceEvaluateTimeSchema" (string) +schemas[12].predicate.enable = true (bool) +schemas[12].predicate.min_period = 1.1 (float) +schemas[12].predicate.type = "min_period_predicate" (string) +schemas[12].type = "time_update_schema" (string) +schemas[13].actions[0].enable = true (bool) +schemas[13].actions[0].expiration = 60000 (int) +schemas[13].actions[0].name = "SpeakerTimeAction" (string) +schemas[13].actions[0].type = "speaker_time_action" (string) +schemas[13].enable = true (bool) +schemas[13].name = "SpeakerTimeSchema" (string) +schemas[13].type = "time_update_schema" (string) +schemas[14].actions[0].enable = true (bool) +schemas[14].actions[0].name = "AwarenessTimeAction" (string) +schemas[14].actions[0].type = "awareness_time_action" (string) +schemas[14].enable = true (bool) +schemas[14].name = "AwarenessTimeSchema" (string) +schemas[14].type = "time_update_schema" (string) +schemas[15].actions[0].drop_radius = 0.3 (float) +schemas[15].actions[0].enable = true (bool) +schemas[15].actions[0].fence_radius = 4.0 (float) +schemas[15].actions[0].name = "MotionTimeAction" (string) +schemas[15].actions[0].type = "motion_time_action" (string) +schemas[15].enable = true (bool) +schemas[15].name = "MotionTimeSchema" (string) +schemas[15].type = "time_update_schema" (string) +schemas[16].actions[0].enable = true (bool) +schemas[16].actions[0].event_timeout = 5.0 (float) +schemas[16].actions[0].name = "AudioTimeAction" (string) +schemas[16].actions[0].type = "audio_time_action" (string) +schemas[16].enable = true (bool) +schemas[16].name = "AudioTimeSchema" (string) +schemas[16].type = "time_update_schema" (string) +schemas[17].actions[0].enable = true (bool) +schemas[17].actions[0].name = "PresenceTimeAction" (string) +schemas[17].actions[0].type = "presence_time_action" (string) +schemas[17].enable = true (bool) +schemas[17].name = "PresenceTimeSchema" (string) +schemas[17].type = "time_update_schema" (string) +schemas[18].actions[0].enable = true (bool) +schemas[18].actions[0].name = "AudioDetectionAction" (string) +schemas[18].actions[0].type = "audio_detection_action" (string) +schemas[18].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[18].actions[1].audio_time_tolerance = 0.35 (float) +schemas[18].actions[1].enable = true (bool) +schemas[18].actions[1].in_fov_margin = 0.1 (float) +schemas[18].actions[1].name = "AudioMeasurementAction" (string) +schemas[18].actions[1].type = "audio_measurement_action" (string) +schemas[18].enable = true (bool) +schemas[18].name = "AudioDetectSchema" (string) +schemas[18].type = "audio_update_schema" (string) +schemas[19].actions[0].enable = true (bool) +schemas[19].actions[0].name = "AudioAwarenessAction" (string) +schemas[19].actions[0].type = "audio_awareness_action" (string) +schemas[19].enable = true (bool) +schemas[19].name = "AudioAwarenessSchema" (string) +schemas[19].type = "audio_update_schema" (string) +schemas[20].actions[0].enable = true (bool) +schemas[20].actions[0].name = "GeometryUpdateAction" (string) +schemas[20].actions[0].type = "geometry_update_action" (string) +schemas[20].actions[1].enable = true (bool) +schemas[20].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[20].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[20].enable = true (bool) +schemas[20].name = "AxisUpdateSchema" (string) +schemas[20].type = "axis_update_schema" (string) +``` + +--- + +## Init/system configs (non-JSON) + +These locations are config surfaces via constants and/or environment variables. + +### /etc/init.d/S04jibo-asr-service + +Source in this workspace: `etc/init.d/S04jibo-asr-service` + +Environment/config variables referenced: + +```text +DAEMON +LOGFILE +PIDFILE +``` + +### /etc/init.d/S02jibo-skills-logd + +Source in this workspace: `etc/init.d/S02jibo-skills-logd` + +Environment/config variables referenced: + +```text +DAEMON +JIBO_LOGD_FILE +JIBO_LOGD_HOST +JIBO_LOGD_PORT +LOGFILE +PIDFILE +PYTHON_BIN +``` + +### /etc/init.d/S03jibo-skills-logpanel + +Source in this workspace: `etc/init.d/S03jibo-skills-logpanel` + +Environment/config variables referenced: + +```text +DAEMON +JIBO_LOGD_FILE +JIBO_LOGPANEL_BIND +JIBO_LOGPANEL_PORT +LOGFILE +PIDFILE +PYTHON_BIN +``` + +### /etc/init.d/S21firewall + +Source in this workspace: `etc/init.d/S21firewall` + +Environment/config variables referenced: + +```text +DYNAMIC_ACCESS +IPTABLES_CMDS +``` + +Ports explicitly referenced in rules: + +```text +15150 22 5353 8686 8779 8989 9191 9292 9797 +``` + +### /hub-shim/systemd/jibo-hub-shim.service + +Source in this workspace: `hub-shim/systemd/jibo-hub-shim.service` + +Environment/config variables referenced: + +```text +JIBO_HUB_SHIM_CONFIG +``` + +### /hub-shim/systemd/jibo-hub-shim.env.example + +Source in this workspace: `hub-shim/systemd/jibo-hub-shim.env.example` + +Environment/config variables referenced: + +```text +JIBO_HUB_SHIM_CONFIG +``` + +### /ai_bridge_server/README.md + +Source in this workspace: `ai_bridge_server/README.md` + +Environment/config variables referenced: + +```text +OLLAMA_MODEL +OLLAMA_URL +WHISPER_MODEL +``` + diff --git a/JiboTools/CONFIG_LOCATIONS.md b/JiboTools/CONFIG_LOCATIONS.md new file mode 100644 index 0000000..2f34b02 --- /dev/null +++ b/JiboTools/CONFIG_LOCATIONS.md @@ -0,0 +1,474 @@ +# JiboOS V3.1 – Config locations inventory (for SSH tooling) + +This workspace is a filesystem tree under `build/`. Most paths below are **absolute paths as they exist on the robot**. + +If you’re using this repo as a staging image, the mapping is: + +- Workspace path: `build/` +- Robot path: `` + +Example: `build/usr/local/etc/jibo-jetstream-service.json` corresponds to `/usr/local/etc/jibo-jetstream-service.json` on-robot. + +--- + +## Highest-level “what runs what” + +### `/usr/local/etc/jibo-system-manager.json` + +**Purpose:** Master orchestrator config. Defines the service startup order, executables, arguments (including which `-c /usr/local/etc/.json` is used), environment variables, and some device-level settings. + +**Why your tooling should care:** if you need to know **which process** consumes a config file, this is the authoritative mapping. + +Notable sections: + +- `SystemManager.service.services[]` + - `name`, `executable`, `modes..arguments` (usually includes the config file path) + - `modes..enabled` (turn a service on/off per mode) +- `SystemManager.skills.environment` + - `JIBO_HUB_SHIM_HOST` (host/port target for the hub shim) + - `JIBO_GQA_ENDPOINT` (HTTP endpoint used by the optional GQA shim) +- `credentials.path`: `/var/jibo/credentials.json` (runtime config; controls region selection in Jetstream) +- `wifi.*` (wpa_supplicant + DHCP client options) +- `time.*` (timezone/localtime paths and NTP sync) + +**Apply/restart:** system-manager itself (how depends on your init/systemd on the robot). Most changes only take effect on service restart or reboot. + +--- + +## Core robot service configs (`/usr/local/etc/*.json`) + +These are the main knobs for the robot’s built-in services. Many follow this pattern: + +- `WebCore.serverPort`: HTTP port for the service +- `.registryPort`: service registry port (usually `8181`) +- `logging.*`: log levels / syslog routing + +### `/usr/local/etc/jibo-service-registry.json` + +**Purpose:** Service registry / management web endpoints. + +- Ports: `8181` (`WebCore.serverPort`, `ServiceRegistry.registryPort`) + +**Apply/restart:** restart `jibo-service-registry`. + +### `/usr/local/etc/jibo-jetstream-service.json` + +**Purpose:** Jetstream (hub client + streaming audio + wakeword/ASR pipeline glue). + +Key knobs: + +- `HubClient.override`: where Jetstream sends `/v1/listen` and friends. + - `hub_hostname`, `hub_port` + - Use this to point Jetstream to a **local or server-hosted hub shim**. +- `HubClient.listen_language` +- `HubClient.encoding_type` + `encoding-settings`: `OGG_OPUS` / `FLAC` settings +- `RecogHJ`, `HubAsr`: timing for SOS/EOS and max speech timeouts + +**Apply/restart:** restart `jibo-jetstream-service`. + +### `/usr/local/etc/jibo-asr-service.json` + +**Purpose:** On-robot ASR service (WebSocket event stream + HTTP start/stop), logging, cloud/local STT selection. + +Key knobs: + +- `webCore.serverPort`: `8088` +- `AsrService.language` +- `AsrService.log_audio`, `log_text`, `log_path`, upload intervals/thresholds +- `AsrService.resident_task` / `resident_audio_channel`: default always-on hotphrase task (e.g. `audio_source_id":"alsa1"`) +- `AsrService.task_templates`: defines ASR pipelines + +**Apply/restart:** restart `jibo-asr-service`. + +Note: this file contains cloud credentials/keys in this build tree. Treat it as sensitive in your tooling (avoid echoing it into logs). + +### `/usr/local/etc/jibo-tts-service.json` + +**Purpose:** On-robot TTS voice + audio output. + +Key knobs: + +- `webCore.serverPort`: `8089` +- `TTSService.resourcePath`: voice resources +- `TTSService.alsaPlaybackDevice`: playback routing +- `voiceParams.*`: speed, volume, max chars, etc. + +**Apply/restart:** restart `jibo-tts-service`. + +### `/usr/local/etc/jibo-nlu-service.json` + +**Purpose:** NLU service (local grammar/model parsing). + +Key knobs: + +- `webCore.serverPort`: `8787` +- `Service.nlu_data_dir`: NLU model data +- `Service.default_locale` + +**Apply/restart:** restart `jibo-nlu-service`. + +### `/usr/local/etc/jibo-audio-service.json` + +**Purpose:** Audio routing/capture/playback device selection and audio processing thresholds. + +Key knobs: + +- `WebCore.serverPort`: `8383` +- `AudioService.alsaCaptureDevice`, `alsaPlaybackDevice` +- `AudioService.router*` latencies +- `AudioService.kinematic_model`: points to `/usr/local/etc/jibo-kinematic-model.json` + +**Apply/restart:** restart `jibo-audio-service`. + +### `/usr/local/etc/jibo-body-service.json` + +**Purpose:** Low-level body control: serial devices, offsets, limits, battery thresholds, IMU calibration path. + +Key knobs: + +- `WebCore.serverPort`: `8282` +- `bodyBoard.*`: `/dev/ttyTHS0/1` devices, offsets, flipped flags, accel/vel limits +- `imu.driver.calibrationFile`: `/var/jibo/imu/imu-cal.json` (runtime file) +- `BodyService.kinematic_model`: points to `/usr/local/etc/jibo-kinematic-model.json` + +**Apply/restart:** restart `jibo-body-service`. + +### `/usr/local/etc/jibo-kinematic-model.json` + +**Purpose:** Robot kinematic model (frame transforms, masses, inertias). Used by audio/body/LPS. + +**Apply/restart:** restart consumers (at least `jibo-body-service`, `jibo-audio-service`, and `jibo-lps-service`). + +### `/usr/local/etc/jibo-media-service.json` + +**Purpose:** Media service camera configuration (CUDA/V4L2 device paths, capture params). + +Key knobs: + +- `WebCore.serverPort`: `7979` +- `MediaService.camera.*`: `/dev/video0`, `/dev/video1`, flips, AE/AWB tuning + +**Apply/restart:** restart `jibo-media-service`. + +### `/usr/local/etc/jibo-lps-service.json` + +**Purpose:** LPS (Local Perception System) + internal media subsystem + visual awareness pipeline. + +Key knobs: + +- `WebCoreLPS.serverPort`: `8484` +- `CaptureSubsystem.camera_config_file`: `/usr/local/etc/lps/cameras.json` +- `EngineSubsystem.schemas.*`: `/usr/local/etc/lps/schemas/{normal,focused,minimal}.json` +- `EngineSubsystem.engine.state.entity_config_file`: `/usr/local/etc/lps/entityConfig.json` +- `EngineSubsystem.engine.state.geometry.*`: camera model params in `/var/jibo/lps/*.json` (runtime files) + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/lps/cameras.json` + +**Purpose:** Camera device list + CUDA capture config + controls presets. + +**Apply/restart:** restart `jibo-lps-service` (and anything using the same capture stack). + +### `/usr/local/etc/lps/entityConfig.json` + +**Purpose:** Entity tracking parameters (people/head tracking, confidence thresholds, trackers, etc.). + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/lps/schemas/normal.json` +### `/usr/local/etc/lps/schemas/focused.json` +### `/usr/local/etc/lps/schemas/minimal.json` + +**Purpose:** LPS “schema” graphs: which detectors/actions run and at what cadence. + +**Apply/restart:** restart `jibo-lps-service`. + +### `/usr/local/etc/jibo-identity-service.json` + +**Purpose:** Identity/face recognition engine + model paths. + +Key knobs: + +- `WebCore.serverPort`: `8489` +- `IdentityService.engine.identifier.*`: choose identifier type (deepid/eigenfaces/resnetfaceid) and model paths +- Storage path: `/var/jibo/identity/*` (runtime) + +**Apply/restart:** restart `jibo-identity-service`. + +### `/usr/local/etc/jibo-server-service.json` + +**Purpose:** Cloud/server connection service + notifications. + +- `WebCore.serverPort`: `8888` +- `NotificationSubsystem.serverURLSuffix` + +**Apply/restart:** restart `jibo-server-service`. + +### `/usr/local/etc/jibo-service-center-service.json` + +**Purpose:** Service-center web UI/service. + +- `WebCore.serverPort`: `9797` + +**Apply/restart:** restart `jibo-service-center-service`. + +### `/usr/local/etc/jibo-certification-service.json` + +**Purpose:** Certification service. + +- `WebCore.serverPort`: `9292` + +**Apply/restart:** restart `jibo-certification-service`. + +### `/usr/local/etc/jibo-system-monitoring-service.json` + +**Purpose:** System health/storage monitoring + health log upload. + +Key knobs: + +- `WebCore.serverPort`: `4111` +- `SystemMonitoringService.storage.semantic`: path aliases used for reporting +- `health.upload.arguments`: uses `/var/jibo/credentials.json` (runtime) + +**Apply/restart:** restart `jibo-system-monitoring-service`. + +### `/usr/local/etc/jibo-test-capture-service.json` + +**Purpose:** Camera capture tools service (debug/QA). + +- `WebCore.serverPort`: `7979` (note: overlaps with `jibo-media-service.json` in this tree; only one should bind a given port at runtime) + +**Apply/restart:** restart `jibo-test-capture-service`. + +### `/usr/local/etc/jibo-test-capture.json` + +**Purpose:** Test capture tool runtime behavior (recording toggles, lock counts, display/profiler options). + +**Apply/restart:** whatever tool/runner loads it (not a standard service config; used by capture tooling). + +### `/usr/local/etc/jibo-camera-calibrator.json` + +**Purpose:** Camera calibration workflow + capture device selection. Writes calibration outputs into `/var/jibo/lps`. + +**Apply/restart:** used by the calibrator tool; changes apply on next run. + +### `/usr/local/etc/jibo-hub-shim.json` + +**Purpose:** Robot-local hub shim config (for running the shim on the robot). + +Key knobs: + +- `listen.*`: bind/port/path for `/v1/listen` +- `asrService.baseUrl`: typically `http://127.0.0.1:8088` on-robot + +**Apply/restart:** restart the hub-shim process (not a core Jibo service; depends on your deployment). + +### `/usr/local/etc/jibo-sts.json` + +**Purpose:** Placeholder config for secure-transfer (STS). In this tree it is currently empty. + +**Apply/restart:** N/A (service may use defaults or other config sources). + +--- + +## SSM / robot “mode” configuration (`/usr/local/etc/jibo-ssm/*.json`) + +These files configure the Node-based SSM (service supervisor/skill launcher) and its ports per robot mode. + +- `/usr/local/etc/jibo-ssm/jibo-ssm-normal.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-oobe.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-developer.json` +- `/usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json` + +Common knobs: + +- `services.SkillsService.port` (HTTP port; typically `8779`) +- `services.DevShell.*` (developer ports: `8686/8989/9191`) (developer/int-developer) +- `services.WifiService.region` (e.g. `api`) +- `RegistryClient.host/port` (usually `127.0.0.1:8181`) +- `logging.namespaces` (fine-grained log routing) + +**Apply/restart:** restart SSM / the Node process that loads these configs. + +--- + +## Hub shim (server-hosted) config + +This is for the PC/server side shim that emulates the hub `/v1/listen` endpoint. + +Workspace source: + +- `hub-shim/config.example.json` (template) +- `hub-shim/config.json` (local dev) +- `hub-shim/systemd/jibo-hub-shim.service` (service unit) +- `hub-shim/systemd/jibo-hub-shim.env.example` (env file template) + +Server install locations (created by `hub-shim/install-server.sh`): + +- `/opt/jibo-hub-shim/` (code) +- `/etc/jibo-hub-shim/config.json` (config) +- `/etc/jibo-hub-shim/jibo-hub-shim.env` (sets `JIBO_HUB_SHIM_CONFIG=/etc/jibo-hub-shim/config.json`) +- `/etc/systemd/system/jibo-hub-shim.service` + +Key knobs in the shim config JSON: + +- `listen.bindHost`, `listen.port`, `listen.path` +- `asrService.baseUrl`: robot ASR base URL (e.g. `http://:8088` if shim runs off-robot) +- `asrService.audioSourceId`: commonly `alsa1` on-robot +- `asrService.timeoutMs` +- `gqaShim.enabled` + `gqaShim.ollama.*`: optional Ollama-backed “GQA shim” HTTP service + +**Apply/restart:** `systemctl restart jibo-hub-shim` (server). For local dev: restart `node index.js ./config.json`. + +--- + +## AI bridge (PC-side) configuration + +### PC server (Python) + +- `ai_bridge_server/server.py` + +Config sources: + +- CLI args: `--host`, `--port` (default run example uses `0.0.0.0:8020`) +- Env vars: + - `OLLAMA_URL` (default `http://127.0.0.1:11434/api/chat`) + - `OLLAMA_MODEL` (default `phi3.5`) + - `WHISPER_MODEL` (default `base`) (audio endpoint only) + +**Apply/restart:** restart the Python process. + +### Robot-side AI bridge client config + +- `/opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json` + +Key knobs: + +- `enabled` +- `mode`: `TEXT` or `AUDIO` +- `serverBaseUrl`: your PC’s bridge server URL (e.g. `http://:8020`) +- ASR integration: + - `useAsrServiceStt`, `asrServiceHost`, `asrServicePort`, `asrAudioSourceId`, `asrTimeoutMs`, `asrAutoStart` +- Behavior: + - `wakeupChitchatPhrases[]` + - `followupEnabled`, `followupDelayMs` + - `aiForwardingAllowedSkills[]` gating + +**Apply/restart:** restart the SkillsService / BE skill (or reboot). + +Related dev-only override: + +- `/opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json` (local-run ASR config variant) + +--- + +## Skills menu / content configs (skill-layer “settings”) + +These are not OS-level services, but they are **configuration surfaces** for skill UI/menu behavior. + +- `/opt/jibo/Jibo/Skills/@be/menu-entries.d/*.json` + - Defines top-level menu entries/submenus (e.g. `childrenDir` points at a skill folder containing `menuEntry.json`). +- `/opt/jibo/Jibo/Skills/*/menuEntry.json` + - Declares skill menu metadata (title/hidden/etc.). +- `/opt/jibo/Jibo/Skills/@be/be/menu/menus/*.json` + - Defines button menus (labels/icons/utterances + hit area polygon). + +**Apply/restart:** restart SkillsService / reload the menu skill. + +--- + +## Init scripts and env-tunable configs (`/etc/init.d/*`) + +These scripts are often the real place where **ports and file paths** are chosen, via environment variables. + +### `/etc/init.d/S04jibo-asr-service` + +- Launches: `/usr/local/bin/jibo-asr-service -c /usr/local/etc/jibo-asr-service.json` +- PID file: `/var/run/jibo-asr-service.pid` +- Log: `/tmp/jibo-asr-service.log` + +### `/etc/init.d/S02jibo-skills-logd` + +Skills UDP log daemon. + +Env vars: + +- `JIBO_LOGD_HOST` (default `127.0.0.1`) +- `JIBO_LOGD_PORT` (default `15140`) +- `JIBO_LOGD_FILE` (default `/tmp/jibo-skills.log`) + +### `/etc/init.d/S03jibo-skills-logpanel` + +Skills web log panel. + +Env vars: + +- `JIBO_LOGPANEL_BIND` (default `0.0.0.0`) +- `JIBO_LOGPANEL_PORT` (default `15150`) +- `JIBO_LOGD_FILE` (shared logfile path) + +### `/etc/init.d/S21firewall` + +Firewall rules (iptables). Not JSON, but it is a major “settings surface”. + +- Always allows SSH port `22` +- Also explicitly allows SkillsService panel `8779` and log panel `15150` +- Opens additional ports based on the current mode via `/usr/bin/jibo-getmode` + +**Apply:** run the init script (restart) or reboot. + +--- + +## Runtime-created or runtime-edited config files (referenced by the above) + +These are not present in this build tree, but the services above reference them. Your SSH tooling will often want to read/edit these too. + +- `/var/jibo/credentials.json` + - Used for: Jetstream `region-settings` selection; system health upload credentials. +- `/var/jibo/imu/imu-cal.json` + - Used for: BodyService IMU calibration. +- `/var/jibo/lps/CameraModelParamsL.json` +- `/var/jibo/lps/CameraModelParamsR.json` +- `/var/jibo/lps/InterCameraTransform.json` + - Used for: LPS geometry. +- `/var/etc/timezone`, `/var/etc/localtime` + - Used for: system timezone. + +--- + +## Quick port index (useful for “is my edit live?” checks) + +From configs in this tree: + +- Service registry: `8181` +- Body: `8282` +- Audio: `8383` +- Jetstream: `8090` +- ASR: `8088` +- TTS: `8089` +- NLU: `8787` +- Identity: `8489` +- LPS: `8484` (and internal media `8486`) +- Media: `7979` +- Server service: `8888` +- System manager: `8585` +- System monitoring: `4111` +- Service center: `9797` +- Certification: `9292` +- Skills service: `8779` (SSM) +- Skills logd: UDP `15140` +- Skills log panel: `15150` +- Hub shim (this project): `9000` (server-side shim) +- AI bridge server (PC): `8020` + +--- + +## Suggested conventions for your editor tool + +- Always read/parse JSON with comment tolerance disabled (these are strict JSON files). +- Treat these keys as “high risk” and avoid accidentally printing them: + - Anything containing `appkey`, `key`, `credential`, `password`, `token`. +- After edits: + - Restart only the owning service (see sections above). + - Prefer `system-manager` / SSM restart only when necessary. diff --git a/JiboTools/CONFIG_VALUES.md b/JiboTools/CONFIG_VALUES.md new file mode 100644 index 0000000..142a903 --- /dev/null +++ b/JiboTools/CONFIG_VALUES.md @@ -0,0 +1,3334 @@ +# JiboOS V3.1 – Config values (expanded) + +This file expands the config inventory by listing **every leaf setting** found in each JSON config, in the form: + +- `path = value (type)` + +Notes: + +- Paths use dot-notation for objects and `[index]` for arrays. +- Long values are truncated to keep this readable (your tooling should read the original JSON when editing). +- Robot paths are shown (derived from this build tree). + +--- + +## JSON configs + +### /hub-shim/config.example.json + +Source in this workspace: `hub-shim/config.example.json` + +```text +asrService.audioSourceId = "alsa1" (string) +asrService.baseUrl = "http://192.168.1.15:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +gqaShim.bindHost = "0.0.0.0" (string) +gqaShim.enabled = false (bool) +gqaShim.ollama.baseUrl = "http://127.0.0.1:11434" (string) +gqaShim.ollama.model = "phi3.5" (string) +gqaShim.ollama.systemPrompt = "You are Jibo, a friendly social robot. Reply in 1-2 short spoken sentences." (string) +gqaShim.port = 8080 (int) +gqaShim.timeoutMs = 20000 (int) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /hub-shim/config.json + +Source in this workspace: `hub-shim/config.json` + +```text +asrService.baseUrl = "http://192.168.1.15:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +gqaShim.bindHost = "0.0.0.0" (string) +gqaShim.enabled = true (bool) +gqaShim.ollama.baseUrl = "http://127.0.0.1:11434" (string) +gqaShim.ollama.model = "phi3.5" (string) +gqaShim.ollama.systemPrompt = "You are Jibo, a friendly social robot. Reply in 1-2 short spoken sentences." (string) +gqaShim.port = 8080 (int) +gqaShim.timeoutMs = 20000 (int) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json` + +```text +aiForwardingAllowedSkills[0] = "@be/main-menu" (string) +aiForwardingAllowedSkills[1] = "@be/idle" (string) +aiForwardingOnlyAllowedSkills = true (bool) +asrAudioSourceId = "alsa1" (string) +asrAutoStart = true (bool) +asrServiceDebugWs = false (bool) +asrServiceHost = "127.0.0.1" (string) +asrServicePort = 8088 (int) +asrTimeoutMs = 15000 (int) +enabled = true (bool) +followupDelayMs = 250 (int) +followupEnabled = true (bool) +jetstreamInjectOnHjHeard = true (bool) +jetstreamOfflineFallbackEnabled = true (bool) +mode = "TEXT" (string) +recordSeconds = 5 (int) +serverBaseUrl = "http://192.168.1.28:8020" (string) +suppressWakeGreetings = true (bool) +useAsrServiceStt = true (bool) +useDumpStateAudio = true (bool) +wakeupChitchatPhrases[0] = "hello" (string) +wakeupChitchatPhrases[1] = "howdy" (string) +wakeupChitchatPhrases[2] = "hi" (string) +wakeupChitchatPhrases[3] = "hey" (string) +wakeupChitchatPhrases[4] = "look what i found" (string) +wakeupChitchatPhrases[5] = "nice to see you" (string) +wakeupChitchatPhrases[6] = "good morning" (string) +wakeupChitchatPhrases[7] = "good afternoon" (string) +wakeupChitchatPhrases[8] = "good evening" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json` + +```text +AsrService.active_sleep_duration = 5000 (int) +AsrService.asr_resource_path = "/usr/local/share/asr/" (string) +AsrService.audio_loop_sleep_us = 10000 (int) +AsrService.block_duration = 50 (int) +AsrService.cloud_appid = "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503" (string) +AsrService.cloud_appkey = "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b" (string) +AsrService.cloud_establish_http_timeout = 5000 (int) +AsrService.cloud_url = "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/" (string) +AsrService.contacts_checksum = "" (string) +AsrService.customs_checksum = "" (string) +AsrService.dictation_type = "dictation" (string) +AsrService.fadeout_duration = 5000000 (int) +AsrService.google_credential = "/usr/local/share/asr/google_asr/credentials-key.json" (string) +AsrService.idle_sleep_duration = 50000 (int) +AsrService.language = "en-US" (string) +AsrService.log_audio = true (bool) +AsrService.log_level = "INFO" (string) +AsrService.log_path = "/var/log/asr" (string) +AsrService.log_server_url = "https://speech-logging.jibo.com/logdrop/logdrop.py" (string) +AsrService.log_text = true (bool) +AsrService.log_upload_time_interval = 60000 (int) +AsrService.loop_checksum = "1" (string) +AsrService.max_asr_log_dir_size = 12000 (int) +AsrService.max_asr_log_dir_size_before_upload_trigger = 10000 (int) +AsrService.max_logfile_size = 1000 (int) +AsrService.max_memory = 150000 (int) +AsrService.min_available_log_partition_space = 5000 (int) +AsrService.name_learning_nbest = 70 (int) +AsrService.name_learning_resource_path = "/usr/local/share/asr/namelearning" (string) +AsrService.name_learning_temp_path = "/var/jibo/asr/namelearning_temp/" (string) +AsrService.nuance_uId = "b8fb02f2c5794963aaafb8c716ef384c" (string) +AsrService.post_to_performance_service = true (bool) +AsrService.resident_audio_channel = "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}" (string) +AsrService.resident_task = "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}" (string) +AsrService.rewrite_rules.log_audio_no_trigger = "^(?!.*?hey_jibo)(.*)->{\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":300, \"audio_overshoot_duration\":0,\"prebuffer\":false} | ($1)" (string) +AsrService.rewrite_rules.namelearning_EOS = "^(.*?\"name\":\\s*name_learning.*)->{\"name\":\"jibo_energy_eos\",\"path\":\"/usr/local/share/asr/jibo_energy_eos\",\"timeout\":10000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremen... (string) +AsrService.size_to_free_up_when_dir_overflowing = 1000 (int) +AsrService.speaker_id_resource_path = "/var/jibo/asr/" (string) +AsrService.task_templates.cloud.emitting_recogs[0] = "google_asr" (string) +AsrService.task_templates.cloud.emitting_recogs[1] = "sensory_sdet" (string) +AsrService.task_templates.cloud.input_template = "({\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"audio_tail_length\":300}| {\"na... (string) +AsrService.task_templates.hey_jibo.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":0, \"au... (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[2] = "google_asr" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[3] = "sensory_sdet" (string) +AsrService.task_templates.hey_jibo_cloud.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0,\"bargein\":true,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"speaker_id\":true} * ({\"name\":\"Speaker... (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_resident.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1}" (string) +AsrService.upload_voc_rootcert = "" (string) +AsrService.upload_voc_url = "ws.nuancemobility.net" (string) +AsrService.use_nuance_upload_voc = false (bool) +AsrService.wipable_files[0] = "/var/log/asr/*.pcm" (string) +AsrService.wipable_files[1] = "/var/log/asr/*.wav" (string) +AsrService.wipable_files[2] = "/var/log/asr/*.log" (string) +AsrService.wipable_files[3] = "/var/jibo/asr/sensory_data_td/client_model.bin" (string) +AsrService.wipable_files[4] = "/var/jibo/asr/sensory_data_td/audio/*" (string) +AsrService.wipable_files[5] = "/var/jibo/asr/namelearning_temp/*" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ASRService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +webCore.fileRoot = "/usr/local/var/www/asrservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8088 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-developer.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-developer.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "info" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-int-developer.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-int-developer.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "info" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-normal.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-normal.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "none" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/config/be-oobe.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/config/be-oobe.json` + +```text +logUncaughtExceptions = true (bool) +logUnhandledRejections = true (bool) +namespaces..console = "none" (string) +namespaces..syslog = "info" (string) +outputs.console.outputFileAndLine = false (bool) +outputs.syslog.outputFileAndLine = false (bool) +outputs.syslog.port = 514 (int) +outputs.syslog.target = "127.0.0.1" (string) +stackTraceLimit = 30 (int) +``` + +### /opt/jibo/Jibo/Skills/@be/be/menu/menus/example-menu.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/be/menu/menus/example-menu.json` + +```text +buttons[0].icon = "core://resources/actionIcons/default.png" (string) +buttons[0].id = "one" (string) +buttons[0].label = "One" (string) +buttons[0].utterance = "one" (string) +buttons[1].icon = "core://resources/actionIcons/default.png" (string) +buttons[1].id = "two" (string) +buttons[1].label = "Two" (string) +buttons[1].utterance = "two" (string) +buttons[2].hitAreaPolygon[0] = 165 (int) +buttons[2].hitAreaPolygon[1] = 0 (int) +buttons[2].hitAreaPolygon[2] = 330 (int) +buttons[2].hitAreaPolygon[3] = 82.5 (float) +buttons[2].hitAreaPolygon[4] = 330 (int) +buttons[2].hitAreaPolygon[5] = 247.5 (float) +buttons[2].hitAreaPolygon[6] = 165 (int) +buttons[2].hitAreaPolygon[7] = 330 (int) +buttons[2].hitAreaPolygon[8] = 0 (int) +buttons[2].hitAreaPolygon[9] = 247.5 (float) +buttons[2].hitAreaPolygon[10] = 0 (int) +buttons[2].hitAreaPolygon[11] = 82.5 (float) +buttons[2].icon = "core://resources/actionIcons/default.png" (string) +buttons[2].id = "hex" (string) +buttons[2].label = "Hex" (string) +buttons[2].utterance = "hex" (string) +id = "exampleMenu" (string) +title = "Example Menu" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/menu-entries.d/00-example.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/menu-entries.d/00-example.json` + +```text +[0].childrenDir = "TestSubMenuA" (string) +[0].color = "teal" (string) +[0].description = "Example submenu from @be/menu-entries.d (scans childrenDir for menuEntry.json)" (string) +[0].icon = "resources/icons/settings.png" (string) +[0].id = "__example__" (string) +[0].order = 5 (int) +[0].submenuTitle = "Example Submenu" (string) +[0].title = "Example (Entry Dir)" (string) +[0].type = "submenu" (string) +``` + +### /opt/jibo/Jibo/Skills/@be/menu-entries.d/10-test.json + +Source in this workspace: `opt/jibo/Jibo/Skills/@be/menu-entries.d/10-test.json` + +```text +[0].childrenDir = "FunStuffTest" (string) +[0].color = "purple" (string) +[0].icon = "resources/icons/fun-stuff.png" (string) +[0].id = "__submenu_test__" (string) +[0].order = 1 (int) +[0].submenuTitle = "Test Submenu" (string) +[0].title = "Test Folder" (string) +[0].type = "submenu" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/ClockOne/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/ClockOne/menuEntry.json` + +```text +color = "blue" (string) +icon = "resources/icons/clock.png" (string) +order = 20 (int) +skillId = "jibo-tbd" (string) +title = "Clock One (launch jibo-tbd)" (string) +type = "skill" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/FunOne/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/FunOne/menuEntry.json` + +```text +color = "orange" (string) +icon = "resources/icons/fun-stuff.png" (string) +order = 10 (int) +skillId = "jibo-tbd" (string) +title = "Fun One (launch jibo-tbd)" (string) +type = "skill" (string) +``` + +### /opt/jibo/Jibo/Skills/FunStuffTest/menuEntry.json + +Source in this workspace: `opt/jibo/Jibo/Skills/FunStuffTest/menuEntry.json` + +```text +hidden = true (bool) +title = "FunStuffTest Root" (string) +``` + +### /usr/local/etc/jibo-asr-service.json + +Source in this workspace: `usr/local/etc/jibo-asr-service.json` + +```text +AsrService.active_sleep_duration = 5000 (int) +AsrService.asr_resource_path = "/usr/local/share/asr/" (string) +AsrService.audio_loop_sleep_us = 10000 (int) +AsrService.block_duration = 50 (int) +AsrService.cloud_appid = "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503" (string) +AsrService.cloud_appkey = "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b" (string) +AsrService.cloud_establish_http_timeout = 5000 (int) +AsrService.cloud_url = "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/" (string) +AsrService.contacts_checksum = "" (string) +AsrService.customs_checksum = "" (string) +AsrService.dictation_type = "dictation" (string) +AsrService.fadeout_duration = 5000000 (int) +AsrService.google_credential = "/usr/local/share/asr/google_asr/credentials-key.json" (string) +AsrService.idle_sleep_duration = 50000 (int) +AsrService.language = "en-US" (string) +AsrService.log_audio = true (bool) +AsrService.log_level = "INFO" (string) +AsrService.log_path = "/var/log/asr" (string) +AsrService.log_server_url = "https://speech-logging.jibo.com/logdrop/logdrop.py" (string) +AsrService.log_text = true (bool) +AsrService.log_upload_time_interval = 60000 (int) +AsrService.loop_checksum = "1" (string) +AsrService.max_asr_log_dir_size = 12000 (int) +AsrService.max_asr_log_dir_size_before_upload_trigger = 10000 (int) +AsrService.max_logfile_size = 1000 (int) +AsrService.max_memory = 150000 (int) +AsrService.min_available_log_partition_space = 5000 (int) +AsrService.name_learning_nbest = 70 (int) +AsrService.name_learning_resource_path = "/usr/local/share/asr/namelearning" (string) +AsrService.name_learning_temp_path = "/var/jibo/asr/namelearning_temp/" (string) +AsrService.nuance_uId = "b8fb02f2c5794963aaafb8c716ef384c" (string) +AsrService.post_to_performance_service = true (bool) +AsrService.resident_audio_channel = "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}" (string) +AsrService.resident_task = "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}" (string) +AsrService.rewrite_rules.log_audio_no_trigger = "^(?!.*?hey_jibo)(.*)->{\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":300, \"audio_overshoot_duration\":0,\"prebuffer\":false} | ($1)" (string) +AsrService.rewrite_rules.namelearning_EOS = "^(.*?\"name\":\"\\s*name_learning.*)->{\"name\":\"jibo_energy_eos\",\"path\":\"/usr/local/share/asr/jibo_energy_eos\",\"timeout\":10000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"increm... (string) +AsrService.size_to_free_up_when_dir_overflowing = 1000 (int) +AsrService.speaker_id_resource_path = "/var/jibo/asr/" (string) +AsrService.task_templates.cloud.emitting_recogs[0] = "google_asr" (string) +AsrService.task_templates.cloud.emitting_recogs[1] = "sensory_sdet" (string) +AsrService.task_templates.cloud.input_template = "({\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"audio_tail_length\":300}| {\"na... (string) +AsrService.task_templates.hey_jibo.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":0, \"au... (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[2] = "google_asr" (string) +AsrService.task_templates.hey_jibo_cloud.emitting_recogs[3] = "sensory_sdet" (string) +AsrService.task_templates.hey_jibo_cloud.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0,\"bargein\":true,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"speaker_id\":true} * ({\"name\":\"Speaker... (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[0] = "hey jibo" (string) +AsrService.task_templates.hey_jibo_resident.emitting_recogs[1] = "Speaker ID TD" (string) +AsrService.task_templates.hey_jibo_resident.input_template = "{\"name\":\"hey jibo\",\"path\":\"/usr/local/share/asr/hey_jibo\",\"timeout\":0} * {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1}" (string) +AsrService.upload_voc_rootcert = "" (string) +AsrService.upload_voc_url = "ws.nuancemobility.net" (string) +AsrService.use_nuance_upload_voc = false (bool) +AsrService.wipable_files[0] = "/var/log/asr/*.pcm" (string) +AsrService.wipable_files[1] = "/var/log/asr/*.wav" (string) +AsrService.wipable_files[2] = "/var/log/asr/*.log" (string) +AsrService.wipable_files[3] = "/var/jibo/asr/sensory_data_td/client_model.bin" (string) +AsrService.wipable_files[4] = "/var/jibo/asr/sensory_data_td/audio/*" (string) +AsrService.wipable_files[5] = "/var/jibo/asr/namelearning_temp/*" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ASRService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +webCore.fileRoot = "/usr/local/var/www/asrservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8088 (int) +``` + +### /usr/local/etc/jibo-audio-service.json + +Source in this workspace: `usr/local/etc/jibo-audio-service.json` + +```text +AudioService.AlsaAudio.LocationEstimate.adjust_confidence_scale = 0.9 (float) +AudioService.AlsaAudio.LocationEstimate.alternate_confidence_scale = 0.5 (float) +AudioService.AlsaAudio.LocationHistory.adjust_confidence_scale = 0.9 (float) +AudioService.AlsaAudio.LocationHistory.alternate_confidence_scale = 0.5 (float) +AudioService.AlsaAudio.PlaybackDetector.consec_active_threshold = 2 (int) +AudioService.AlsaAudio.PlaybackDetector.consec_inactive_threshold = 10 (int) +AudioService.AlsaAudio.PlaybackDetector.quiet_threshold = 50 (int) +AudioService.AlsaAudio.PlaybackDetector.sub_samples = 10 (int) +AudioService.AlsaAudio.energy.high_freq = 1000 (int) +AudioService.AlsaAudio.energy.high_q = 2.0 (float) +AudioService.AlsaAudio.energy.low_freq = 200 (int) +AudioService.AlsaAudio.energy.low_q = 1.0 (float) +AudioService.AlsaAudio.energy.mid_freq = 500 (int) +AudioService.AlsaAudio.energy.mid_q = 2.0 (float) +AudioService.SEDiags.injector_white_noise_rx_magnitude_q15[0] = 2048 (int) +AudioService.SEDiags.injector_white_noise_tx_magnitude_q15[0] = 2048 (int) +AudioService.SEDiags.senr_res_echo_fullband_weight_factor[0] = 3 (int) +AudioService.alsaCaptureDevice = "hw:ADC" (string) +AudioService.alsaPlaybackDevice = "hw:TLV320DAC3100" (string) +AudioService.enable_vis_sockets = false (bool) +AudioService.hotphrase_begin_time = 0.8 (float) +AudioService.hotphrase_end_time = 0.2 (float) +AudioService.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +AudioService.log_directory = "/tmp" (string) +AudioService.log_hotphrase_audio = false (bool) +AudioService.moving_noise_duration = 2.0 (float) +AudioService.moving_noise_enabled = false (bool) +AudioService.moving_noise_file = "/usr/local/share/audioservice/brown_noise.wav" (string) +AudioService.moving_noise_min_vel = 0.05 (float) +AudioService.ping_pong_test = false (bool) +AudioService.registryPort = 8181 (int) +AudioService.routerCaptureDevice = "services_sink" (string) +AudioService.routerCaptureLatency = 64000 (int) +AudioService.routerPlaybackDevice = "as_source" (string) +AudioService.routerPlaybackLatency = 64000 (int) +AudioService.serverPort = 8383 (int) +AudioService.useMMFx = true (bool) +ErrorTracker.views[0].errors[0] = "ALSA_CAPTURE_XRUN" (string) +ErrorTracker.views[0].errors[1] = "ALSA_PLAYBACK_XRUN" (string) +ErrorTracker.views[0].errors[2] = "ROUTER_CAPTURE_XRUN" (string) +ErrorTracker.views[0].errors[3] = "ROUTER_CAPTURE_SHORT" (string) +ErrorTracker.views[0].errors[4] = "ROUTER_PLAYBACK_XRUN" (string) +ErrorTracker.views[0].errors[5] = "ROUTER_PLAYBACK_SHORT" (string) +ErrorTracker.views[0].errors[6] = "ROUTER_GET_UNDERRUN" (string) +ErrorTracker.views[0].errors[7] = "ROUTER_PUT_OVERRUN" (string) +ErrorTracker.views[0].errors[8] = "ROUTER_READ_OVERRUN" (string) +ErrorTracker.views[0].errors[9] = "ROUTER_WRITE_UNDERRUN" (string) +ErrorTracker.views[0].errors[10] = "ROUTER_ON_STREAM_OVERFLOW" (string) +ErrorTracker.views[0].errors[11] = "ROUTER_ON_STREAM_UNDERFLOW" (string) +ErrorTracker.views[0].name = "AudioService" (string) +WebCore.fileRoot = "/usr/local/var/www/audioservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8383 (int) +logging.loggers.aa.level = "notice" (string) +logging.loggers.aa.name = "AlsaAudio" (string) +logging.loggers.aala.level = "notice" (string) +logging.loggers.aala.name = "AlsaAudio.LocationAccumulator" (string) +logging.loggers.aalh.level = "notice" (string) +logging.loggers.aalh.name = "AlsaAudio.LocationHistory" (string) +logging.loggers.ar.level = "notice" (string) +logging.loggers.ar.name = "AlsaRouter" (string) +logging.loggers.as.level = "notice" (string) +logging.loggers.as.name = "AudioService" (string) +logging.loggers.pr.level = "notice" (string) +logging.loggers.pr.name = "PulseRouter" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-body-service.json + +Source in this workspace: `usr/local/etc/jibo-body-service.json` + +```text +BodyService.backlightDutyFile = "/sys/class/backlight/backlight.9/brightness" (string) +BodyService.backlightPeriodFile = "/sys/class/backlight/backlight.9/max_brightness" (string) +BodyService.commandOKCount = 25 (int) +BodyService.coreDCDCTempFile = "/sys/class/hwmon/hwmon6/temp4_input" (string) +BodyService.cpuDCDC1TempFile = "/sys/class/hwmon/hwmon6/temp2_input" (string) +BodyService.cpuDCDC2TempFile = "/sys/class/hwmon/hwmon6/temp3_input" (string) +BodyService.cpuTempHiThresh = 90 (int) +BodyService.cpuTempLowThres = 85 (int) +BodyService.cpuThermalZone = "/sys/class/thermal/thermal_zone1" (string) +BodyService.fanControl = false (bool) +BodyService.fanCurrentFile = "/sys/class/hwmon/hwmon6/in3_input" (string) +BodyService.fanCurrentResistor = 0.5 (float) +BodyService.fanOffTemp = 60 (int) +BodyService.fanOnTemp = 70 (int) +BodyService.fanPWMFile = "/sys/class/hwmon/hwmon5/pwm1" (string) +BodyService.fanPWMMax = 255 (int) +BodyService.gpuDCDC1TempFile = "/sys/class/hwmon/hwmon6/temp5_input" (string) +BodyService.gpuDCDC2TempFile = "/sys/class/hwmon/hwmon6/temp6_input" (string) +BodyService.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +BodyService.mainBoardTempFile = "/sys/class/thermal/thermal_zone0/temp" (string) +BodyService.maxCommandRate = 40.0 (float) +BodyService.minCommandRate = 4.0 (float) +BodyService.pmicTempFile = "/sys/class/hwmon/hwmon6/temp1_input" (string) +BodyService.registryPort = 8181 (int) +BodyService.serverPort = 8282 (int) +ErrorTracker.views[0].errors[0] = "NECK_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[1] = "NECK_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[2] = "NECK_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[3] = "NECK_STALL_FAULT" (string) +ErrorTracker.views[0].errors[4] = "NECK_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[5] = "NECK_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[6] = "NECK_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[7] = "NECK_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[8] = "NECK_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[9] = "NECK_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[10] = "NECK_POWER_FAULT" (string) +ErrorTracker.views[0].errors[11] = "NECK_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[12] = "TORSO_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[13] = "TORSO_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[14] = "TORSO_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[15] = "TORSO_STALL_FAULT" (string) +ErrorTracker.views[0].errors[16] = "TORSO_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[17] = "TORSO_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[18] = "TORSO_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[19] = "TORSO_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[20] = "TORSO_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[21] = "TORSO_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[22] = "TORSO_POWER_FAULT" (string) +ErrorTracker.views[0].errors[23] = "TORSO_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[24] = "PELVIS_THERMISTOR_HIGH_FAULT" (string) +ErrorTracker.views[0].errors[25] = "PELVIS_THERMISTOR_LOW_FAULT" (string) +ErrorTracker.views[0].errors[26] = "PELVIS_ENCODER_FAULT" (string) +ErrorTracker.views[0].errors[27] = "PELVIS_STALL_FAULT" (string) +ErrorTracker.views[0].errors[28] = "PELVIS_BOARD_TIMEOUT" (string) +ErrorTracker.views[0].errors[29] = "PELVIS_POWER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[30] = "PELVIS_STALL_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[31] = "PELVIS_ENCODER_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[32] = "PELVIS_ENCODER_BACKWARDS_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[33] = "PELVIS_THERMISTOR_FAULT_COUNT" (string) +ErrorTracker.views[0].errors[34] = "PELVIS_POWER_FAULT" (string) +ErrorTracker.views[0].errors[35] = "PELVIS_ENCODER_BACKWARDS_FAULT" (string) +ErrorTracker.views[0].errors[36] = "NOT_UPRIGHT_LOCKOUT" (string) +ErrorTracker.views[0].errors[37] = "NO_BATTERY_LOCKOUT" (string) +ErrorTracker.views[0].errors[38] = "FALLING_LOCKOUT" (string) +ErrorTracker.views[0].errors[39] = "CPU_TEMP_HIGH" (string) +ErrorTracker.views[0].errors[40] = "BATTERY_TEMP_LOW" (string) +ErrorTracker.views[0].errors[41] = "BATTERY_TEMP_HIGH" (string) +ErrorTracker.views[0].errors[42] = "BATTERY_LOW" (string) +ErrorTracker.views[0].errors[43] = "FALL_DETECTED" (string) +ErrorTracker.views[0].errors[44] = "BB_PACKET_INVALID" (string) +ErrorTracker.views[0].errors[45] = "BB_PACKET_WRONG_DEST" (string) +ErrorTracker.views[0].errors[46] = "BB_PACKET_WRONG_SRC" (string) +ErrorTracker.views[0].name = "BodyService" (string) +WebCore.fileRoot = "/usr/local/var/www/bodyservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8282 (int) +bodyBoard.battMaxTemp = 47.0 (float) +bodyBoard.battMinTemp = 0.0 (float) +bodyBoard.hatchHighThreshold = 1.5 (float) +bodyBoard.hatchLowThreshold = 1.0 (float) +bodyBoard.headTouchMapping[0] = 3 (int) +bodyBoard.headTouchMapping[1] = 5 (int) +bodyBoard.headTouchMapping[2] = 4 (int) +bodyBoard.headTouchMapping[3] = 0 (int) +bodyBoard.headTouchMapping[4] = 2 (int) +bodyBoard.headTouchMapping[5] = 1 (int) +bodyBoard.ledCmdTimeout = 5000 (int) +bodyBoard.lowBattCapHiThresh = 0.42 (float) +bodyBoard.lowBattCapLowThresh = 0.35 (float) +bodyBoard.motorCmdTimeout = 500 (int) +bodyBoard.neckAccLimit = 30.0 (float) +bodyBoard.neckDevice = "/dev/ttyTHS0" (string) +bodyBoard.neckFlipped = true (bool) +bodyBoard.neckOffset = 0.061 (float) +bodyBoard.neckVelLimit = 10.0 (float) +bodyBoard.pelvisAccLimit = 30.0 (float) +bodyBoard.pelvisDevice = "/dev/ttyTHS1" (string) +bodyBoard.pelvisFlipped = true (bool) +bodyBoard.pelvisOffset = 2.742 (float) +bodyBoard.pelvisVelLimit = 10.0 (float) +bodyBoard.torsoAccLimit = 30.0 (float) +bodyBoard.torsoDevice = "/dev/ttyTHS1" (string) +bodyBoard.torsoFlipped = true (bool) +bodyBoard.torsoOffset = 0.052 (float) +bodyBoard.torsoVelLimit = 10.0 (float) +imu.driver.calibrationFile = "/var/jibo/imu/imu-cal.json" (string) +imu.driver.deviceName = "/dev/spidev1.0" (string) +imu.fallDetector.high_g_end_thresh = 25.0 (float) +imu.fallDetector.high_g_start_thresh = 30.0 (float) +imu.fallDetector.low_g_end_thresh = 4.0 (float) +imu.fallDetector.low_g_start_thresh = 2.0 (float) +imu.fallDetector.max_high = 0.1 (float) +imu.fallDetector.max_low_high_sep = 0.1 (float) +imu.fallDetector.min_falling = 1.0 (float) +imu.fallDetector.min_low = 0.1 (float) +imu.gyroOffset.avg_samples = 250 (int) +imu.gyroOffset.still_seconds = 2.0 (float) +imu.gyroOffset.thresh_acc = 0.2 (float) +imu.gyroOffset.thresh_rot = 0.05 (float) +imu.movingDetector.a_acc = 0.01 (float) +imu.movingDetector.a_rot = 0.02 (float) +imu.movingDetector.thresh_acc = 0.3 (float) +imu.movingDetector.thresh_rot = 0.25 (float) +imu.tip_end_thresh = 0.9 (float) +imu.tip_start_thresh = 0.7 (float) +imu.upEstimator.alpha = 0.5 (float) +imu.upMovingDetector.a_acc = 0.5 (float) +imu.upMovingDetector.a_rot = 0.05 (float) +imu.upMovingDetector.thresh_acc = 0.15 (float) +imu.upMovingDetector.thresh_rot = 0.05 (float) +logging.loggers.root.level = "notice" (string) +motionLimiter.disable = false (bool) +motionLimiter.kVelLim = 0.25 (float) +motionLimiter.logEnable = false (bool) +motionLimiter.logFile = "/tmp/motion-limiter.log" (string) +motionLimiter.maxTime = 0.25 (float) +motionLimiter.maxTorque = 70 (int) +motionLimiter.unindexedAcc = 10.0 (float) +motionLimiter.unindexedVel = 1.0 (float) +motionLimiter.velAlphaDn = 0.8 (float) +motionLimiter.velAlphaUp = 0.05 (float) +``` + +### /usr/local/etc/jibo-camera-calibrator.json + +Source in this workspace: `usr/local/etc/jibo-camera-calibrator.json` + +```text +calibrator.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +calibrator.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +calibrator.camera.cuda.devices[0].ae.gainP = 0.02 (float) +calibrator.camera.cuda.devices[0].ae.targetY = 0.35 (float) +calibrator.camera.cuda.devices[0].awb.P = 0.15 (float) +calibrator.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +calibrator.camera.cuda.devices[0].awb.numSamples = 1000 (int) +calibrator.camera.cuda.devices[0].awb.seed = 0 (int) +calibrator.camera.cuda.devices[0].awb.targetU = 0.5 (float) +calibrator.camera.cuda.devices[0].awb.targetV = 0.53 (float) +calibrator.camera.cuda.devices[0].bufferPoolSize = 4 (int) +calibrator.camera.cuda.devices[0].enabled = true (bool) +calibrator.camera.cuda.devices[0].gamma.B = 1.0 (float) +calibrator.camera.cuda.devices[0].gamma.G = 1.0 (float) +calibrator.camera.cuda.devices[0].gamma.R = 1.0 (float) +calibrator.camera.cuda.devices[0].hFlip = true (bool) +calibrator.camera.cuda.devices[0].height = 720 (int) +calibrator.camera.cuda.devices[0].name = "Camera-0" (string) +calibrator.camera.cuda.devices[0].path = "/dev/video1" (string) +calibrator.camera.cuda.devices[0].vFlip = true (bool) +calibrator.camera.cuda.devices[0].width = 1280 (int) +calibrator.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +calibrator.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +calibrator.camera.cuda.devices[1].ae.gainP = 0.02 (float) +calibrator.camera.cuda.devices[1].ae.targetY = 0.35 (float) +calibrator.camera.cuda.devices[1].awb.P = 0.15 (float) +calibrator.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +calibrator.camera.cuda.devices[1].awb.numSamples = 1000 (int) +calibrator.camera.cuda.devices[1].awb.seed = 0 (int) +calibrator.camera.cuda.devices[1].awb.targetU = 0.5 (float) +calibrator.camera.cuda.devices[1].awb.targetV = 0.53 (float) +calibrator.camera.cuda.devices[1].bufferPoolSize = 4 (int) +calibrator.camera.cuda.devices[1].enabled = true (bool) +calibrator.camera.cuda.devices[1].gamma.B = 1.0 (float) +calibrator.camera.cuda.devices[1].gamma.G = 1.0 (float) +calibrator.camera.cuda.devices[1].gamma.R = 1.0 (float) +calibrator.camera.cuda.devices[1].hFlip = true (bool) +calibrator.camera.cuda.devices[1].height = 720 (int) +calibrator.camera.cuda.devices[1].name = "Camera-1" (string) +calibrator.camera.cuda.devices[1].path = "/dev/video0" (string) +calibrator.camera.cuda.devices[1].vFlip = true (bool) +calibrator.camera.cuda.devices[1].width = 1280 (int) +calibrator.camera.file.format = "YUV420p" (string) +calibrator.camera.file.videos[0] = "videos/video-000/video.json" (string) +calibrator.camera.file.videos[1] = "videos/video-001/video.json" (string) +calibrator.camera.type = "CUDA" (string) +calibrator.camera.v4l2.devices.left = "/dev/video0" (string) +calibrator.camera.v4l2.devices.right = "/dev/video1" (string) +calibrator.setup.calibrators[0].debug = false (bool) +calibrator.setup.calibrators[0].filename = "CameraModelParamsR.json" (string) +calibrator.setup.calibrators[0].frame_name = "right_eye" (string) +calibrator.setup.calibrators[1].debug = false (bool) +calibrator.setup.calibrators[1].filename = "CameraModelParamsL.json" (string) +calibrator.setup.calibrators[1].frame_name = "left_eye" (string) +calibrator.setup.circleDistance = 0.117 (float) +calibrator.setup.maxTries = 5 (int) +calibrator.setup.num_calibrators = 2 (int) +calibrator.setup.num_distances = 3 (int) +calibrator.setup.num_positions = 10 (int) +calibrator.setup.num_transforms = 1 (int) +calibrator.setup.output = "/var/jibo/lps" (string) +calibrator.setup.pixSize = 4e-06 (float) +calibrator.setup.positions[0].cameras[0] = 0 (int) +calibrator.setup.positions[0].fileMessage = "wide_pos_1" (string) +calibrator.setup.positions[0].message = "Wide Position 1 - press Enter" (string) +calibrator.setup.positions[0].num_cameras = 1 (int) +calibrator.setup.positions[0].saveBlobData = true (bool) +calibrator.setup.positions[0].saveBlobToCal = true (bool) +calibrator.setup.positions[0].saveImage = true (bool) +calibrator.setup.positions[1].cameras[0] = 0 (int) +calibrator.setup.positions[1].fileMessage = "wide_pos_2" (string) +calibrator.setup.positions[1].message = "Wide Position 2 - press Enter" (string) +calibrator.setup.positions[1].num_cameras = 1 (int) +calibrator.setup.positions[1].saveBlobData = true (bool) +calibrator.setup.positions[1].saveBlobToCal = true (bool) +calibrator.setup.positions[1].saveImage = true (bool) +calibrator.setup.positions[2].cameras[0] = 0 (int) +calibrator.setup.positions[2].fileMessage = "wide_pos_3" (string) +calibrator.setup.positions[2].message = "Wide Position 3 - press Enter" (string) +calibrator.setup.positions[2].num_cameras = 1 (int) +calibrator.setup.positions[2].saveBlobData = true (bool) +calibrator.setup.positions[2].saveBlobToCal = true (bool) +calibrator.setup.positions[2].saveImage = true (bool) +calibrator.setup.positions[3].cameras[0] = 0 (int) +calibrator.setup.positions[3].fileMessage = "wide_pos_4" (string) +calibrator.setup.positions[3].message = "Wide Position 4 - press Enter" (string) +calibrator.setup.positions[3].num_cameras = 1 (int) +calibrator.setup.positions[3].saveBlobData = true (bool) +calibrator.setup.positions[3].saveBlobToCal = true (bool) +calibrator.setup.positions[3].saveImage = true (bool) +calibrator.setup.positions[4].cameras[0] = 0 (int) +calibrator.setup.positions[4].fileMessage = "wide_pos_5" (string) +calibrator.setup.positions[4].message = "Wide Position 5- press Enter" (string) +calibrator.setup.positions[4].num_cameras = 1 (int) +calibrator.setup.positions[4].saveBlobData = true (bool) +calibrator.setup.positions[4].saveBlobToCal = true (bool) +calibrator.setup.positions[4].saveImage = true (bool) +calibrator.setup.positions[5].cameras[0] = 0 (int) +calibrator.setup.positions[5].cameras[1] = 1 (int) +calibrator.setup.positions[5].fileMessage = "both_pos_1" (string) +calibrator.setup.positions[5].message = "Both Position 1 - press Enter" (string) +calibrator.setup.positions[5].num_cameras = 2 (int) +calibrator.setup.positions[5].saveBlobData = true (bool) +calibrator.setup.positions[5].saveBlobToCal = true (bool) +calibrator.setup.positions[5].saveImage = true (bool) +calibrator.setup.positions[6].cameras[0] = 0 (int) +calibrator.setup.positions[6].cameras[1] = 1 (int) +calibrator.setup.positions[6].fileMessage = "both_pos_2" (string) +calibrator.setup.positions[6].message = "Both Position 2 - press Enter" (string) +calibrator.setup.positions[6].num_cameras = 2 (int) +calibrator.setup.positions[6].saveBlobData = true (bool) +calibrator.setup.positions[6].saveBlobToCal = true (bool) +calibrator.setup.positions[6].saveImage = true (bool) +calibrator.setup.positions[7].cameras[0] = 0 (int) +calibrator.setup.positions[7].cameras[1] = 1 (int) +calibrator.setup.positions[7].fileMessage = "both_pos_3" (string) +calibrator.setup.positions[7].message = "Both Position 3 - press Enter" (string) +calibrator.setup.positions[7].num_cameras = 2 (int) +calibrator.setup.positions[7].saveBlobData = true (bool) +calibrator.setup.positions[7].saveBlobToCal = true (bool) +calibrator.setup.positions[7].saveImage = true (bool) +calibrator.setup.positions[8].cameras[0] = 0 (int) +calibrator.setup.positions[8].cameras[1] = 1 (int) +calibrator.setup.positions[8].fileMessage = "both_pos_4" (string) +calibrator.setup.positions[8].message = "Both Position 4 - press Enter" (string) +calibrator.setup.positions[8].num_cameras = 2 (int) +calibrator.setup.positions[8].saveBlobData = true (bool) +calibrator.setup.positions[8].saveBlobToCal = true (bool) +calibrator.setup.positions[8].saveImage = true (bool) +calibrator.setup.positions[9].cameras[0] = 0 (int) +calibrator.setup.positions[9].cameras[1] = 1 (int) +calibrator.setup.positions[9].fileMessage = "both_pos_5" (string) +calibrator.setup.positions[9].message = "Both Position 5 - press Enter" (string) +calibrator.setup.positions[9].num_cameras = 2 (int) +calibrator.setup.positions[9].saveBlobData = true (bool) +calibrator.setup.positions[9].saveBlobToCal = true (bool) +calibrator.setup.positions[9].saveImage = true (bool) +calibrator.setup.recordDelay = 1000 (int) +calibrator.setup.transforms[0].cameraA = 0 (int) +calibrator.setup.transforms[0].cameraB = 1 (int) +calibrator.setup.transforms[0].filename = "InterCameraTransform.json" (string) +``` + +### /usr/local/etc/jibo-certification-service.json + +Source in this workspace: `usr/local/etc/jibo-certification-service.json` + +```text +CertificationService.enableDebugSocket = true (bool) +CertificationService.registryPort = 8181 (int) +CertificationService.serverPort = 9292 (int) +ErrorTracker.views[0].name = "CertificationService" (string) +WebCore.fileRoot = "/usr/local/var/www/certificationservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 9292 (int) +logging.channels.splitter.channels = "syslog" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-hub-shim.json + +Source in this workspace: `usr/local/etc/jibo-hub-shim.json` + +```text +asrService.baseUrl = "http://127.0.0.1:8088" (string) +asrService.timeoutMs = 15000 (int) +asrService.wsPath = "/simple_port" (string) +listen.bindHost = "0.0.0.0" (string) +listen.path = "/v1/listen" (string) +listen.port = 9000 (int) +logging.level = "info" (string) +nlu.enabled = true (bool) +``` + +### /usr/local/etc/jibo-identity-service.json + +Source in this workspace: `usr/local/etc/jibo-identity-service.json` + +```text +IdentityService.engine.identifier.deepid.filename = "/var/jibo/identity/deepid.data" (string) +IdentityService.engine.identifier.deepid.gpu_id = 0 (int) +IdentityService.engine.identifier.deepid.iterations = 50000 (int) +IdentityService.engine.identifier.deepid.jlf = "/var/jibo/identity/deepid" (string) +IdentityService.engine.identifier.deepid.kind = "face" (string) +IdentityService.engine.identifier.deepid.model = "/usr/local/share/lps/deepid/CASIA_train_test.prototxt" (string) +IdentityService.engine.identifier.deepid.name = "deepid" (string) +IdentityService.engine.identifier.deepid.sighup_effect = "snapshot" (string) +IdentityService.engine.identifier.deepid.sigint_effect = "stop" (string) +IdentityService.engine.identifier.deepid.size = 128 (int) +IdentityService.engine.identifier.deepid.snapshot = "/usr/local/share/lps/deepid" (string) +IdentityService.engine.identifier.deepid.solver = "/usr/local/share/lps/deepid/CASIA_solver.prototxt" (string) +IdentityService.engine.identifier.deepid.type = "deepid_identifier" (string) +IdentityService.engine.identifier.deepid.weights = "/usr/local/share/lps/deepid/CASIA_iter_666000.caffemodel" (string) +IdentityService.engine.identifier.eigenfaces.attenuation = 100.0 (float) +IdentityService.engine.identifier.eigenfaces.filename = "/var/jibo/identity/eigenfaces.data" (string) +IdentityService.engine.identifier.eigenfaces.kind = "face" (string) +IdentityService.engine.identifier.eigenfaces.name = "eigenfaces" (string) +IdentityService.engine.identifier.eigenfaces.radius = 5 (int) +IdentityService.engine.identifier.eigenfaces.size = 128 (int) +IdentityService.engine.identifier.eigenfaces.type = "eigenfaces_identifier" (string) +IdentityService.engine.identifier.identifier_type = "deepid" (string) +IdentityService.engine.identifier.resnetfaceid.filename = "/var/jibo/identity/resnetfaceid.data" (string) +IdentityService.engine.identifier.resnetfaceid.jlf = "/var/jibo/identity/resnet" (string) +IdentityService.engine.identifier.resnetfaceid.kind = "face" (string) +IdentityService.engine.identifier.resnetfaceid.model = "/usr/local/share/identity/resnet/dlib_face_recognition_resnet_model_v1.dat" (string) +IdentityService.engine.identifier.resnetfaceid.name = "resnetfaceid" (string) +IdentityService.engine.identifier.resnetfaceid.size = 150 (int) +IdentityService.engine.identifier.resnetfaceid.type = "resnetfaceid_identifier" (string) +IdentityService.engine.manager.detector.min_hint_height = 40 (int) +IdentityService.engine.manager.detector.min_hint_width = 40 (int) +IdentityService.engine.manager.directory = "/var/jibo/identity/faces" (string) +IdentityService.engine.manager.kind = "face" (string) +IdentityService.engine.manager.max_attempts = 3 (int) +IdentityService.engine.manager.max_examples = 5 (int) +IdentityService.engine.manager.max_subjects = 16 (int) +IdentityService.engine.processor.interval = 1000 (int) +IdentityService.engine.processor.max_requests = 10 (int) +IdentityService.global.face_landmark_68.file = "/usr/local/share/lps/shape_predictor_68_face_landmarks.dat" (string) +IdentityService.registryPort = 8181 (int) +IdentityService.serverPort = 8489 (int) +WebCore.fileRoot = "/usr/local/var/www/identity" (string) +WebCore.serverPort = 8489 (int) +logging.loggers.l11.level = "information" (string) +logging.loggers.l11.name = "ImageIdentifier" (string) +logging.loggers.l8.level = "information" (string) +logging.loggers.l8.name = "IdentificationManager" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-jetstream-service.json + +Source in this workspace: `usr/local/etc/jibo-jetstream-service.json` + +```text +AudioChannel.block_duration_ms = 50 (int) +AudioChannel.buffer_size = 2048 (int) +AudioChannel.period_size = 85 (int) +HJLogger.comment-logging-fraction = "The probability that an HJ utterance will be logged -- range 0-1" (string) +HJLogger.end_margin_ms = 500 (int) +HJLogger.logging_probability = 0.05 (float) +HJLogger.speech_analytics_log_path = "/var/log/jetstream/hj_logs" (string) +HJLogger.start_margin_ms = 500 (int) +HubAsr.global_maxSpeechTimeout_sec = 20 (int) +HubAsr.global_sosTimeout_sec = 3 (int) +HubAsr.local_maxSpeechTimeout_sec = 20 (int) +HubAsr.local_sosTimeout_sec = 2 (int) +HubClient.encoding-settings.FLAC.bps = 16 (int) +HubClient.encoding-settings.FLAC.channels = 1 (int) +HubClient.encoding-settings.FLAC.sample_rate = 16000 (int) +HubClient.encoding-settings.FLAC.streaming_rate = 3.0 (float) +HubClient.encoding-settings.OGG_OPUS.bitrate = 64000 (int) +HubClient.encoding-settings.OGG_OPUS.channels = 1 (int) +HubClient.encoding-settings.OGG_OPUS.sample_rate = 16000 (int) +HubClient.encoding-settings.OGG_OPUS.streaming_rate = 1.2 (float) +HubClient.encoding-settings.OGG_OPUS.vbr = true (bool) +HubClient.encoding_type = "OGG_OPUS" (string) +HubClient.encoding_type_comment = "This can be either LINEAR16, FLAC, or OGG_OPUS" (string) +HubClient.listen_language = "en-US" (string) +HubClient.listen_url = "/v1/listen" (string) +HubClient.override.entrypoint_hostname = "dev-entrypoint.jibo.com" (string) +HubClient.override.hub_hostname = "192.168.1.28" (string) +HubClient.override.hub_port = 9000 (int) +HubClient.proactive_url = "/v1/proactive" (string) +HubClient.region-settings.alpha-entrypoint.entrypoint_hostname = "alpha-entrypoint.jibo.com" (string) +HubClient.region-settings.alpha-entrypoint.hub_hostname = "alpha-hub.jibo.com" (string) +HubClient.region-settings.alpha-entrypoint.hub_port = 443 (int) +HubClient.region-settings.api.entrypoint_hostname = "api.jibo.com" (string) +HubClient.region-settings.api.hub_hostname = "neo-hub.jibo.com" (string) +HubClient.region-settings.api.hub_port = 443 (int) +HubClient.region-settings.comment = "This is a switch, selected by the 'region' field setting in the robot's /var/jibo/credentials.json file" (string) +HubClient.region-settings.dev-entrypoint.entrypoint_hostname = "dev-entrypoint.jibo.com" (string) +HubClient.region-settings.dev-entrypoint.hub_hostname = "dev-hub.jibo.com" (string) +HubClient.region-settings.dev-entrypoint.hub_port = 443 (int) +HubClient.region-settings.preprod-entrypoint.entrypoint_hostname = "preprod-entrypoint.jibo.com" (string) +HubClient.region-settings.preprod-entrypoint.hub_hostname = "preprod-hub.jibo.com" (string) +HubClient.region-settings.preprod-entrypoint.hub_port = 443 (int) +HubClient.region-settings.stg-entrypoint.entrypoint_hostname = "stg-entrypoint.jibo.com" (string) +HubClient.region-settings.stg-entrypoint.hub_hostname = "stg-hub.jibo.com" (string) +HubClient.region-settings.stg-entrypoint.hub_port = 443 (int) +JetService.log_directory = "/var/log/jetstream" (string) +JetstreamService.registryPort = 8181 (int) +JetstreamService.serverPort = 8090 (int) +JetstreamService.stacktracing = false (bool) +RecogEOS.resource_path = "/usr/local/share/asr/jibo_energy_eos" (string) +RecogHJ.comment = "Positive margin values widen the HJ Phrase spotter's standard endpoints. The end_margin_ms also compensates for the Phrase Spotter's premature endpoint, which is around the beginning O in jibO" (string) +RecogHJ.config_path = "/usr/local/share/asr/hey_jibo" (string) +RecogHJ.hj_end_margin_ms = 100 (int) +RecogHJ.hj_start_margin_ms = 0 (int) +RecogNameLearning.g2p_service = "http://localhost:8089/tts_nbest_prons" (string) +RecogNameLearning.resource_path = "/usr/local/share/asr/namelearning" (string) +RecogNameLearning.speech_analytics_log_path = "/var/log/jetstream/namelearning_logs" (string) +RecogNameLearning.temp_path = "/var/jibo/asr/namelearning_temp/" (string) +RecogSpeakerEnroll.checkQuality = "LOW" (string) +RecogSpeakerEnroll.client_path = "/var/jibo/asr/sensory_data_td/" (string) +RecogSpeakerEnroll.comment = "change next property to 'sensory_log_path' to enable Sensory enroller logging, 'xxxsensory_log_path' to disable" (string) +RecogSpeakerEnroll.enroll_start_margin_ms = 250 (int) +RecogSpeakerEnroll.margin-comment = "positive values for the start margin increase the amount of silence fed to the enroller before the HJ occurs" (string) +RecogSpeakerEnroll.minEnrollUtts = 6 (int) +RecogSpeakerEnroll.speech_analytics_log_path = "/var/log/jetstream/enroller_logs" (string) +RecogSpeakerEnroll.ubm_path = "/usr/local/share/asr/sensory_data_td/" (string) +RecogSpeakerEnroll.xxxsensory_log_path = "/var/jibo/asr/sensory_enroller_logs" (string) +RecogSpeakerID.PHRASEver = "OFF" (string) +RecogSpeakerID.client_path = "/var/jibo/asr/sensory_data_td/" (string) +RecogSpeakerID.comment = "change next property to 'sensory_log_path' to enable Sensory authenticator logging, 'xxxsensory_log_path' to disable" (string) +RecogSpeakerID.comment2 = "id_end_margin is used when retrying to ID with an audio segment, it also controls the end margin of the logged utts" (string) +RecogSpeakerID.confidence_margin = 2 (int) +RecogSpeakerID.id_end_margin_ms = 300 (int) +RecogSpeakerID.id_start_margin_ms = 250 (int) +RecogSpeakerID.margin-comment = "positive values for start and end margins widen the space around the speaker-id HJ" (string) +RecogSpeakerID.threshold = -1.2 (float) +RecogSpeakerID.ubm_path = "/usr/local/share/asr/sensory_data_td/" (string) +RecogSpeakerID.xxxsensory_log_path = "/var/jibo/asr/sensory_auth_logs" (string) +logging.channels.console.class = "ConsoleChannel" (string) +logging.channels.console.pattern = "%Y-%m-%d %H:%M:%S %s: [%p] %t" (string) +logging.channels.splitter.channels = "syslog" (string) +logging.channels.splitter.class = "SplitterChannel" (string) +logging.channels.syslog.class = "RFC_5424_Channel" (string) +logging.channels.syslog.facility = "SYSLOG_DAEMON" (string) +logging.channels.syslog.name = "jibo-jetstream-service" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "debug" (string) +logging.loggers.l1.name = "JetService" (string) +logging.loggers.l2.level = "debug" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "debug" (string) +webCore.fileRoot = "/usr/local/var/www/jetstream" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8090 (int) +``` + +### /usr/local/etc/jibo-kinematic-model.json + +Source in this workspace: `usr/local/etc/jibo-kinematic-model.json` + +```text +transforms[0].frame_type = "STATIC" (string) +transforms[0].name = "root" (string) +transforms[0].parameters.a = 0 (int) +transforms[0].parameters.d = 0 (int) +transforms[0].parameters.initial = 0 (int) +transforms[0].parameters.offset = 0 (int) +transforms[0].parameters.r = 0 (int) +transforms[0].parent = "" (string) +transforms[0].transform_type = "DH" (string) +transforms[1].center_of_mass.x = 0.004438 (float) +transforms[1].center_of_mass.y = 8e-05 (float) +transforms[1].center_of_mass.z = 0.021875 (float) +transforms[1].frame_type = "STATIC" (string) +transforms[1].inertia_tensor.xx = 2.336131 (float) +transforms[1].inertia_tensor.xy = -0.006218 (float) +transforms[1].inertia_tensor.xz = 0.030549 (float) +transforms[1].inertia_tensor.yy = 1.869121 (float) +transforms[1].inertia_tensor.yz = 0.003324 (float) +transforms[1].inertia_tensor.zz = 3.886624 (float) +transforms[1].mass = 1.541647 (float) +transforms[1].name = "base" (string) +transforms[1].parameters.a = 0 (int) +transforms[1].parameters.d = 0 (int) +transforms[1].parameters.initial = 0 (int) +transforms[1].parameters.multiplier = 1 (int) +transforms[1].parameters.offset = 0 (int) +transforms[1].parameters.r = 0 (int) +transforms[1].parent = "root" (string) +transforms[1].transform_type = "DH" (string) +transforms[2].center_of_mass.x = -0.005595 (float) +transforms[2].center_of_mass.y = 0.001393 (float) +transforms[2].center_of_mass.z = 0.020862 (float) +transforms[2].frame_type = "DYNAMIC" (string) +transforms[2].inertia_tensor.xx = 0.934733 (float) +transforms[2].inertia_tensor.xy = 0.005263 (float) +transforms[2].inertia_tensor.xz = 0.014859 (float) +transforms[2].inertia_tensor.yy = 1.049176 (float) +transforms[2].inertia_tensor.yz = 0.006845 (float) +transforms[2].inertia_tensor.zz = 1.600895 (float) +transforms[2].mass = 0.486722 (float) +transforms[2].name = "pelvis" (string) +transforms[2].parameters.a = 0.2269 (float) +transforms[2].parameters.d = 0.043125 (float) +transforms[2].parameters.initial = 0 (int) +transforms[2].parameters.offset = 0 (int) +transforms[2].parameters.r = 0.0 (float) +transforms[2].parent = "base" (string) +transforms[2].transform_type = "DH" (string) +transforms[3].center_of_mass.x = 0.001299 (float) +transforms[3].center_of_mass.y = 0.001032 (float) +transforms[3].center_of_mass.z = 0.020476 (float) +transforms[3].frame_type = "DYNAMIC" (string) +transforms[3].inertia_tensor.xx = 0.765517 (float) +transforms[3].inertia_tensor.xy = -0.02199 (float) +transforms[3].inertia_tensor.xz = 0.005756 (float) +transforms[3].inertia_tensor.yy = 0.847899 (float) +transforms[3].inertia_tensor.yz = -0.013292 (float) +transforms[3].inertia_tensor.zz = 1.027389 (float) +transforms[3].mass = 0.405103 (float) +transforms[3].name = "torso" (string) +transforms[3].parameters.a = -0.37874 (float) +transforms[3].parameters.d = 0.056129 (float) +transforms[3].parameters.initial = 0 (int) +transforms[3].parameters.offset = 0 (int) +transforms[3].parameters.r = 0.0 (float) +transforms[3].parent = "pelvis" (string) +transforms[3].transform_type = "DH" (string) +transforms[4].center_of_mass.x = -0.006929 (float) +transforms[4].center_of_mass.y = -0.000665 (float) +transforms[4].center_of_mass.z = 0.047582 (float) +transforms[4].frame_type = "DYNAMIC" (string) +transforms[4].inertia_tensor.xx = 4.256305 (float) +transforms[4].inertia_tensor.xy = 0.028528 (float) +transforms[4].inertia_tensor.xz = -0.070913 (float) +transforms[4].inertia_tensor.yy = 3.001682 (float) +transforms[4].inertia_tensor.yz = 0.025871 (float) +transforms[4].inertia_tensor.zz = 3.980863 (float) +transforms[4].mass = 1.105841 (float) +transforms[4].name = "head" (string) +transforms[4].parameters.a = 0 (int) +transforms[4].parameters.d = 0.073181 (float) +transforms[4].parameters.initial = 0 (int) +transforms[4].parameters.offset = 0 (int) +transforms[4].parameters.r = 0 (int) +transforms[4].parent = "torso" (string) +transforms[4].transform_type = "DH" (string) +transforms[5].frame_type = "STATIC" (string) +transforms[5].name = "upper_head" (string) +transforms[5].parameters.a = -0.32882 (float) +transforms[5].parameters.d = 0.10809 (float) +transforms[5].parameters.initial = 0 (int) +transforms[5].parameters.offset = 0 (int) +transforms[5].parameters.r = -0.005976 (float) +transforms[5].parent = "head" (string) +transforms[5].transform_type = "DH" (string) +transforms[6].frame_type = "STATIC" (string) +transforms[6].name = "center_face" (string) +transforms[6].parameters.a = -0.32882 (float) +transforms[6].parameters.d = 0.060362 (float) +transforms[6].parameters.initial = 0 (int) +transforms[6].parameters.offset = 0 (int) +transforms[6].parameters.r = 0.035301 (float) +transforms[6].parent = "head" (string) +transforms[6].transform_type = "DH" (string) +transforms[7].frame_type = "STATIC" (string) +transforms[7].name = "imu_dh" (string) +transforms[7].parameters.a = -1.5708 (float) +transforms[7].parameters.d = 0.0 (float) +transforms[7].parameters.initial = 0 (int) +transforms[7].parameters.offset = 0 (int) +transforms[7].parameters.r = 0.0 (float) +transforms[7].parent = "center_face" (string) +transforms[7].transform_type = "DH" (string) +transforms[8].frame_type = "STATIC" (string) +transforms[8].name = "imu" (string) +transforms[8].parameters.dx = -0.041 (float) +transforms[8].parameters.dy = -0.0315 (float) +transforms[8].parameters.dz = 0.015 (float) +transforms[8].parameters.rx = 0 (int) +transforms[8].parameters.ry = 0 (int) +transforms[8].parameters.rz = 0 (int) +transforms[8].parent = "imu_dh" (string) +transforms[8].transform_type = "DOF6" (string) +transforms[9].frame_type = "STATIC" (string) +transforms[9].name = "top_head" (string) +transforms[9].parameters.a = 0 (int) +transforms[9].parameters.d = 0.142443 (float) +transforms[9].parameters.initial = 0 (int) +transforms[9].parameters.offset = 0 (int) +transforms[9].parameters.r = 0.007506 (float) +transforms[9].parent = "head" (string) +transforms[9].transform_type = "DH" (string) +transforms[10].frame_type = "STATIC" (string) +transforms[10].name = "left_eye" (string) +transforms[10].parameters.dx = 0 (int) +transforms[10].parameters.dy = 0.041 (float) +transforms[10].parameters.dz = 0 (int) +transforms[10].parameters.rx = 0 (int) +transforms[10].parameters.ry = 0 (int) +transforms[10].parameters.rz = 0 (int) +transforms[10].parent = "upper_head" (string) +transforms[10].transform_type = "DOF6" (string) +transforms[11].frame_type = "STATIC" (string) +transforms[11].name = "right_eye" (string) +transforms[11].parameters.dx = 0 (int) +transforms[11].parameters.dy = -0.041 (float) +transforms[11].parameters.dz = 0 (int) +transforms[11].parameters.rx = 0 (int) +transforms[11].parameters.ry = 0 (int) +transforms[11].parameters.rz = 0 (int) +transforms[11].parent = "upper_head" (string) +transforms[11].transform_type = "DOF6" (string) +``` + +### /usr/local/etc/jibo-lps-service.json + +Source in this workspace: `usr/local/etc/jibo-lps-service.json` + +```text +AudioSubsystem.player = false (bool) +AudioSubsystem.registryPort = 8181 (int) +BodySubsystem.player = false (bool) +BodySubsystem.registryPort = 8181 (int) +CaptureSubsystem.camera_config_file = "/usr/local/etc/lps/cameras.json" (string) +CaptureSubsystem.player = false (bool) +CaptureSubsystem.watchdog.enabled = false (bool) +CaptureSubsystem.watchdog.period = 3000 (int) +CaptureSubsystem.watchdog.start = 10000 (int) +CaptureSubsystem.watchdog.timeout = 5000 (int) +EngineSubsystem.engine.log.schema.audio.skip = 600 (int) +EngineSubsystem.engine.log.schema.audio.stats = false (bool) +EngineSubsystem.engine.log.schema.axis.skip = 900 (int) +EngineSubsystem.engine.log.schema.axis.stats = false (bool) +EngineSubsystem.engine.log.schema.image.skip = 600 (int) +EngineSubsystem.engine.log.schema.image.stats = false (bool) +EngineSubsystem.engine.log.schema.time.skip = 600 (int) +EngineSubsystem.engine.log.schema.time.stats = false (bool) +EngineSubsystem.engine.state.awareness.lighting.criteria.cameraIds[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.dimensions[0].height = 720 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.dimensions[0].width = 1280 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.outputLevels[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.criteria.outputTypes[0] = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.max_exposure = 0.066667 (float) +EngineSubsystem.engine.state.awareness.lighting.max_gain = 16.0 (float) +EngineSubsystem.engine.state.awareness.lighting.max_luminance = 1.0 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[0].lighting = 0.1 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[0].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[1].lighting = 0.2 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[1].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[2].lighting = 1.0 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[2].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.quality[3].lighting = 1.5 (float) +EngineSubsystem.engine.state.awareness.lighting.quality[3].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[0].exposure = 0.01067 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[0].quality = 0 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[1].exposure = 0.05333 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[1].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[2].exposure = 0.90667 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[2].quality = 1 (int) +EngineSubsystem.engine.state.awareness.lighting.sensor[3].exposure = 1.01333 (float) +EngineSubsystem.engine.state.awareness.lighting.sensor[3].quality = 0 (int) +EngineSubsystem.engine.state.awareness.num_sectors = 8 (int) +EngineSubsystem.engine.state.entity_config_file = "/usr/local/etc/lps/entityConfig.json" (string) +EngineSubsystem.engine.state.geometry.inter_cam_transform_file = "/var/jibo/lps/InterCameraTransform.json" (string) +EngineSubsystem.engine.state.geometry.kinematic_model = "/usr/local/etc/jibo-kinematic-model.json" (string) +EngineSubsystem.engine.state.geometry.left_camera_file = "/var/jibo/lps/CameraModelParamsL.json" (string) +EngineSubsystem.engine.state.geometry.right_camera_file = "/var/jibo/lps/CameraModelParamsR.json" (string) +EngineSubsystem.engine.state.identification.face.connection_timeout = 60000 (int) +EngineSubsystem.engine.state.identification.face.criteria.cameraIds[0] = 0 (int) +EngineSubsystem.engine.state.identification.face.criteria.dimensions[0].height = 720 (int) +EngineSubsystem.engine.state.identification.face.criteria.dimensions[0].width = 1280 (int) +EngineSubsystem.engine.state.identification.face.criteria.outputTypes[0] = 0 (int) +EngineSubsystem.engine.state.identification.face.kind = "face" (string) +EngineSubsystem.engine.state.identification.face.registry_host = "127.0.0.1" (string) +EngineSubsystem.engine.state.identification.face.registry_port = 8181 (int) +EngineSubsystem.engine.state.identification.face.type = "network_face_identification" (string) +EngineSubsystem.engine.update_period = 60 (int) +EngineSubsystem.global.face_landmark_68.file = "/usr/local/share/lps/shape_predictor_68_face_landmarks.dat" (string) +EngineSubsystem.schemas.focused = "/usr/local/etc/lps/schemas/focused.json" (string) +EngineSubsystem.schemas.minimal = "/usr/local/etc/lps/schemas/minimal.json" (string) +EngineSubsystem.schemas.normal = "/usr/local/etc/lps/schemas/normal.json" (string) +ErrorTracker.views[0].errors[0] = "CAMERA_FAILURE" (string) +ErrorTracker.views[0].name = "LPSService" (string) +ErrorTracker.views[1].name = "MediaService" (string) +LPSService.channels[0] = "PFSearchRegion" (string) +LPSService.channels[1] = "CapDevCUDAExpMeta" (string) +LPSService.channels[2] = "CapDevCUDAExp_0" (string) +LPSService.channels[3] = "CapDevCUDAExp_1" (string) +LPSService.channels[4] = "CapDevCUDAExpStat" (string) +LPSService.registryPort = 8181 (int) +LPSService.serverPort = 8484 (int) +MediaService.audio_source = "MediaIn.monitor" (string) +MediaService.future_wait_ms = 8000 (int) +MediaService.photo_path = "/opt/jibo/Photos/" (string) +MediaService.photographer.compressor.interval = 1000 (int) +MediaService.photographer.compressor.quality = 92 (int) +MediaService.photographer.fourMP.height = 1520 (int) +MediaService.photographer.fourMP.width = 2688 (int) +MediaService.photographer.oneMP.height = 720 (int) +MediaService.photographer.oneMP.width = 1280 (int) +MediaService.photographer.request_queue_max_size = 5 (int) +MediaService.recording_path = "/opt/jibo/Recordings/" (string) +MediaService.registryPort = 8181 (int) +MediaService.serverPort = 8486 (int) +PlayerSubsystem.audio.detections.directory = "/opt/jibo/data/player/audio/detections" (string) +PlayerSubsystem.body.axis.directory = "/opt/jibo/data/player/body/axis" (string) +PlayerSubsystem.capture.frames.directory = "/opt/jibo/data/player/capture/frames" (string) +PlayerSubsystem.root = "/opt/jibo/data/player" (string) +RecorderSubsystem.audio.detections.directory = "/opt/jibo/data/recorder/audio/detections" (string) +RecorderSubsystem.audio.detections.padding = 7 (int) +RecorderSubsystem.body.axis.directory = "/opt/jibo/data/recorder/body/axis" (string) +RecorderSubsystem.body.axis.padding = 7 (int) +RecorderSubsystem.capture.frames.criteria.dimensions[0].height = 360 (int) +RecorderSubsystem.capture.frames.criteria.dimensions[0].width = 640 (int) +RecorderSubsystem.capture.frames.criteria.outputTypes[0] = 0 (int) +RecorderSubsystem.capture.frames.directory = "/opt/jibo/data/recorder/capture/frames" (string) +RecorderSubsystem.capture.frames.padding = 7 (int) +RecorderSubsystem.lps.audio-awareness.directory = "/opt/jibo/data/recorder/lps/audio-awareness/" (string) +RecorderSubsystem.lps.audio-awareness.padding = 7 (int) +RecorderSubsystem.lps.visual-awareness.directory = "/opt/jibo/data/recorder/lps/visual-awareness/" (string) +RecorderSubsystem.lps.visual-awareness.padding = 7 (int) +RecorderSubsystem.root = "/opt/jibo/data/recorder" (string) +WebCoreLPS.fileRoot = "/usr/local/var/www/lps" (string) +WebCoreLPS.serverPort = 8484 (int) +WebCoreMedia.fileRoot = "/usr/local/var/www/media" (string) +WebCoreMedia.serverPort = 8486 (int) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "ImageIdentifier" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "IdentityFusion" (string) +logging.loggers.l3.level = "warning" (string) +logging.loggers.l3.name = "Util.Channel" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-media-service.json + +Source in this workspace: `usr/local/etc/jibo-media-service.json` + +```text +MediaService.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +MediaService.camera.cuda.devices[0].ae.exposureP = 0.1 (float) +MediaService.camera.cuda.devices[0].ae.gainP = 0.05 (float) +MediaService.camera.cuda.devices[0].ae.targetY = 0.35 (float) +MediaService.camera.cuda.devices[0].awb.P = 0.15 (float) +MediaService.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +MediaService.camera.cuda.devices[0].awb.numSamples = 1000 (int) +MediaService.camera.cuda.devices[0].awb.seed = 0 (int) +MediaService.camera.cuda.devices[0].awb.targetU = 0.5 (float) +MediaService.camera.cuda.devices[0].awb.targetV = 0.53 (float) +MediaService.camera.cuda.devices[0].bufferPoolSize = 4 (int) +MediaService.camera.cuda.devices[0].enabled = true (bool) +MediaService.camera.cuda.devices[0].format = 3 (int) +MediaService.camera.cuda.devices[0].gamma.U = 1.0 (float) +MediaService.camera.cuda.devices[0].gamma.V = 1.0 (float) +MediaService.camera.cuda.devices[0].gamma.Y = 0.5 (float) +MediaService.camera.cuda.devices[0].hFlip = true (bool) +MediaService.camera.cuda.devices[0].height = 720 (int) +MediaService.camera.cuda.devices[0].name = "Camera-0" (string) +MediaService.camera.cuda.devices[0].path = "/dev/video0" (string) +MediaService.camera.cuda.devices[0].vFlip = true (bool) +MediaService.camera.cuda.devices[0].width = 1280 (int) +MediaService.camera.file.format = "YUV420p" (string) +MediaService.camera.file.videos[0] = "videos/video-000/video.json" (string) +MediaService.camera.file.videos[1] = "videos/video-001/video.json" (string) +MediaService.camera.type = "CUDA" (string) +MediaService.camera.v4l2.devices.left = "/dev/video0" (string) +MediaService.camera.v4l2.devices.right = "/dev/video1" (string) +MediaService.registryPort = 8181 (int) +MediaService.serverPort = 7979 (int) +WebCore.fileRoot = "/usr/local/var/www/media" (string) +WebCore.serverPort = 7979 (int) +logging.channels.console.class = "ConsoleChannel" (string) +logging.channels.console.pattern = "%Y-%m-%d %H:%M:%S %s: [%p] %t" (string) +logging.channels.splitter.channels = "syslog" (string) +logging.channels.splitter.class = "SplitterChannel" (string) +logging.channels.syslog.class = "SyslogChannel" (string) +logging.channels.syslog.facility = "SYSLOG_DAEMON" (string) +logging.channels.syslog.name = "jibo-media-service" (string) +logging.channels.syslog.pattern = "%s: [%p] %t" (string) +logging.loggers.l1.channel = "splitter" (string) +logging.loggers.l1.level = "debug" (string) +logging.loggers.l1.name = "Application" (string) +``` + +### /usr/local/etc/jibo-nlu-service.json + +Source in this workspace: `usr/local/etc/jibo-nlu-service.json` + +```text +Service.default_locale = "en-us" (string) +Service.handler = "nlu_interface" (string) +Service.host = "localhost" (string) +Service.log_ws = "nlu_logs" (string) +Service.name = "nlu" (string) +Service.nlu_data_dir = "/usr/local/share/nlu-data" (string) +Service.path = "/" (string) +Service.port = 8787 (int) +Service.post_to_perf_monitor_service = true (bool) +Service.reg_timer = 10000 (int) +Service.reset_memory_ws = "reset_memory" (string) +Service.tls = "" (string) +Service.ttl = 30 (int) +Service.version = "v2.7.6" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "NluService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "information" (string) +parsing.cmp_params.log_weights = false (bool) +parsing.cmp_params.minimize_fst = true (bool) +parsing.cmp_params.union_minimize_fst = false (bool) +parsing.parsing_params.max_num_states = 50 (int) +parsing.parsing_params.use_v8_interpreter = true (bool) +webCore.requestLogging = false (bool) +webCore.serverPort = 8787 (int) +``` + +### /usr/local/etc/jibo-server-service.json + +Source in this workspace: `usr/local/etc/jibo-server-service.json` + +```text +ErrorTracker.views[0].errors[0] = "CANNOT_CONNECT_TO_SERVER" (string) +ErrorTracker.views[0].name = "ServerService" (string) +NotificationSubsystem.refreshInterval = 15000 (int) +NotificationSubsystem.registryPort = 8181 (int) +NotificationSubsystem.serverURLSuffix = "-socket.jibo.com" (string) +ServerService.registryPort = 8181 (int) +ServerService.serverPort = 8888 (int) +WebCore.fileRoot = "/usr/local/var/www/server" (string) +WebCore.serverPort = 8888 (int) +logging.loggers.l2.channel = "splitter" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "NotificationSubsystem" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-service-center-service.json + +Source in this workspace: `usr/local/etc/jibo-service-center-service.json` + +```text +ErrorTracker.views[0].name = "ServiceCenterService" (string) +ServiceCenterService.registryPort = 8181 (int) +ServiceCenterService.serverPort = 9797 (int) +WebCore.fileRoot = "/usr/local/var/www/servicecenterservice" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 9797 (int) +logging.channels.splitter.channels = "syslog" (string) +logging.loggers.ServiceCenterService.level = "notice" (string) +logging.loggers.ServiceCenterService.name = "ServiceCenterService" (string) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-service-registry.json + +Source in this workspace: `usr/local/etc/jibo-service-registry.json` + +```text +ManagementCore.authenticate = false (bool) +ManagementCore.fileRoot = "/usr/local/var/www/service-management" (string) +ManagementCore.validate = false (bool) +ServiceRegistry.registryPort = 8181 (int) +ServiceRegistry.serverPort = 8181 (int) +WebCore.fileRoot = "/usr/local/var/www/service-registry" (string) +WebCore.requestLogging = false (bool) +WebCore.serverPort = 8181 (int) +logging.loggers.root.level = "notice" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-developer.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-developer.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "info" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.DevShell.debugPort = 9191 (int) +services.DevShell.port = 8686 (int) +services.DevShell.sdkDest = "bin/on-robot/" (string) +services.DevShell.skillDest = "/opt/jibo/Skills" (string) +services.DevShell.skillUser = "jibo-skill" (string) +services.DevShell.syncPort = 8989 (int) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.PerformanceService.port = 10003 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-int-developer.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "info" (string) +logging.namespaces..syslog = "info" (string) +logging.namespaces.C.AsrService.console = "info" (string) +logging.namespaces.C.AsrService.syslog = "debug" (string) +logging.namespaces.SSM.Client.ASR.console = "info" (string) +logging.namespaces.SSM.Client.ASR.syslog = "debug" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.DevShell.debugPort = 9191 (int) +services.DevShell.port = 8686 (int) +services.DevShell.sdkDest = "bin/on-robot/" (string) +services.DevShell.skillDest = "/opt/jibo/Jibo/Skills" (string) +services.DevShell.skillUser = "jibo-skill" (string) +services.DevShell.syncPort = 8989 (int) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.PerformanceService.port = 10003 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-normal.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-normal.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "none" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.RemoteService.port = 10321 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.SkillsService.startSkill = "@be/be" (string) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-ssm/jibo-ssm-oobe.json + +Source in this workspace: `usr/local/etc/jibo-ssm/jibo-ssm-oobe.json` + +```text +RegistryClient.host = "127.0.0.1" (string) +RegistryClient.port = 8181 (int) +logging.logUncaughtExceptions = true (bool) +logging.logUnhandledRejections = true (bool) +logging.namespaces..console = "none" (string) +logging.namespaces..syslog = "info" (string) +logging.outputs.console.outputFileAndLine = false (bool) +logging.outputs.syslog.outputFileAndLine = false (bool) +logging.outputs.syslog.port = 514 (int) +logging.outputs.syslog.target = "127.0.0.1" (string) +logging.stackTraceLimit = 30 (int) +platformVersion = ">=3.1.0" (string) +services.ErrorService.port = 10004 (int) +services.GlobalManagerService.port = 8338 (int) +services.KBService.port = 8778 (int) +services.NotificationsService.port = 8001 (int) +services.SchedulerService.otaFilter = "fcs" (string) +services.SchedulerService.port = 10005 (int) +services.SkillsService.port = 8779 (int) +services.SkillsService.singleSkill = true (bool) +services.SkillsService.startSkill = "oobe-config" (string) +services.WifiService.port = 8668 (int) +services.WifiService.region = "api" (string) +``` + +### /usr/local/etc/jibo-sts.json + +Source in this workspace: `usr/local/etc/jibo-sts.json` + +_File is empty in this tree._ + +### /usr/local/etc/jibo-system-manager.json + +Source in this workspace: `usr/local/etc/jibo-system-manager.json` + +```text +ErrorTracker.views[0].errors[0] = "SERVICE_CRASH_BODY" (string) +ErrorTracker.views[0].errors[1] = "SERVICE_CRASH_AUDIO" (string) +ErrorTracker.views[0].errors[2] = "SERVICE_CRASH_TTS" (string) +ErrorTracker.views[0].errors[3] = "SERVICE_CRASH_ASR" (string) +ErrorTracker.views[0].errors[4] = "SERVICE_CRASH_NLU" (string) +ErrorTracker.views[0].errors[5] = "SERVICE_CRASH_IDENTITY" (string) +ErrorTracker.views[0].errors[6] = "SERVICE_CRASH_LPS" (string) +ErrorTracker.views[0].errors[7] = "SERVICE_CRASH_MEDIA_MANAGER" (string) +ErrorTracker.views[0].errors[8] = "SERVICE_CRASH_SECURE_TRANSFER" (string) +ErrorTracker.views[0].errors[9] = "SERVICE_CRASH_MONITOR" (string) +ErrorTracker.views[0].errors[10] = "SERVICE_CRASH_SERVER" (string) +ErrorTracker.views[0].errors[11] = "SERVICE_CRASH_SSM" (string) +ErrorTracker.views[0].errors[12] = "SERVICE_CRASH_EXPRESSION" (string) +ErrorTracker.views[0].errors[13] = "WPA_CONTROL_INTERFACE_DOWN" (string) +ErrorTracker.views[0].name = "SystemManager" (string) +ManagementCore.authenticate = false (bool) +ManagementCore.validate = false (bool) +SystemManager.credentials.path = "/var/jibo/credentials.json" (string) +SystemManager.firewall.mode_commands.remote_operation[0] = "-p tcp --syn --dport 7160 -j ACCEPT" (string) +SystemManager.powerButton.duration = 2000 (int) +SystemManager.powerButton.path = "/dev/input/event0" (string) +SystemManager.powerButton.warning = 10000 (int) +SystemManager.powerManager.warning = 10000 (int) +SystemManager.registryPort = 8181 (int) +SystemManager.serverPort = 8585 (int) +SystemManager.service.backup.directory = "/opt/tmp/backup" (string) +SystemManager.service.backup.executable = "/usr/local/bin/jibo-system-backup" (string) +SystemManager.service.backup.file = "/opt/tmp/backup.tar.bz2" (string) +SystemManager.service.connection_timeout = 210000 (int) +SystemManager.service.restore.directory = "/opt/tmp/restore" (string) +SystemManager.service.restore.executable = "/usr/local/bin/jibo-system-restore" (string) +SystemManager.service.restore.file = "/opt/tmp/restore.tar.bz2" (string) +SystemManager.service.services[0].crash_code = "SERVICE_CRASH_BODY" (string) +SystemManager.service.services[0].executable = "/usr/local/bin/jibo-body-service" (string) +SystemManager.service.services[0].modes.certification.enabled = false (bool) +SystemManager.service.services[0].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[0].modes.default.arguments[1] = "/usr/local/etc/jibo-body-service.json" (string) +SystemManager.service.services[0].modes.default.directory = "" (string) +SystemManager.service.services[0].modes.default.enabled = true (bool) +SystemManager.service.services[0].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[0].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[0].name = "body" (string) +SystemManager.service.services[0].order = 0 (int) +SystemManager.service.services[0].shutdown_timeout = 10000 (int) +SystemManager.service.services[0].startup_timeout = 10000 (int) +SystemManager.service.services[1].crash_code = "SERVICE_CRASH_AUDIO" (string) +SystemManager.service.services[1].executable = "/usr/local/bin/jibo-audio-service" (string) +SystemManager.service.services[1].modes.certification.enabled = false (bool) +SystemManager.service.services[1].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[1].modes.default.arguments[1] = "/usr/local/etc/jibo-audio-service.json" (string) +SystemManager.service.services[1].modes.default.directory = "" (string) +SystemManager.service.services[1].modes.default.enabled = true (bool) +SystemManager.service.services[1].name = "audio" (string) +SystemManager.service.services[1].order = 1 (int) +SystemManager.service.services[1].shutdown_timeout = 10000 (int) +SystemManager.service.services[1].startup_timeout = 10000 (int) +SystemManager.service.services[2].crash_code = "SERVICE_CRASH_TTS" (string) +SystemManager.service.services[2].executable = "/usr/local/bin/jibo-tts-service" (string) +SystemManager.service.services[2].modes.certification.enabled = false (bool) +SystemManager.service.services[2].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[2].modes.default.arguments[1] = "/usr/local/etc/jibo-tts-service.json" (string) +SystemManager.service.services[2].modes.default.directory = "" (string) +SystemManager.service.services[2].modes.default.enabled = true (bool) +SystemManager.service.services[2].modes.service.enabled = false (bool) +SystemManager.service.services[2].name = "tts" (string) +SystemManager.service.services[2].order = 2 (int) +SystemManager.service.services[2].shutdown_timeout = 10000 (int) +SystemManager.service.services[2].startup_timeout = 10000 (int) +SystemManager.service.services[3].crash_code = "SERVICE_CRASH_ASR" (string) +SystemManager.service.services[3].executable = "/usr/local/bin/jibo-asr-service" (string) +SystemManager.service.services[3].modes.certification.enabled = false (bool) +SystemManager.service.services[3].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[3].modes.default.arguments[1] = "/usr/local/etc/jibo-asr-service.json" (string) +SystemManager.service.services[3].modes.default.directory = "" (string) +SystemManager.service.services[3].modes.default.enabled = true (bool) +SystemManager.service.services[3].modes.service.enabled = false (bool) +SystemManager.service.services[3].name = "asr" (string) +SystemManager.service.services[3].order = 2 (int) +SystemManager.service.services[3].shutdown_timeout = 10000 (int) +SystemManager.service.services[3].startup_timeout = 10000 (int) +SystemManager.service.services[4].crash_code = "SERVICE_CRASH_JETSTREAM" (string) +SystemManager.service.services[4].executable = "/usr/local/bin/jibo-jetstream-service" (string) +SystemManager.service.services[4].modes.certification.enabled = false (bool) +SystemManager.service.services[4].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[4].modes.default.arguments[1] = "/usr/local/etc/jibo-jetstream-service.json" (string) +SystemManager.service.services[4].modes.default.directory = "" (string) +SystemManager.service.services[4].modes.default.enabled = true (bool) +SystemManager.service.services[4].modes.service.enabled = true (bool) +SystemManager.service.services[4].name = "jetstream" (string) +SystemManager.service.services[4].order = 2 (int) +SystemManager.service.services[4].shutdown_timeout = 10000 (int) +SystemManager.service.services[4].startup_timeout = 10000 (int) +SystemManager.service.services[5].crash_code = "SERVICE_CRASH_NLU" (string) +SystemManager.service.services[5].executable = "/usr/local/bin/jibo-nlu-service" (string) +SystemManager.service.services[5].modes.certification.enabled = false (bool) +SystemManager.service.services[5].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[5].modes.default.arguments[1] = "/usr/local/etc/jibo-nlu-service.json" (string) +SystemManager.service.services[5].modes.default.directory = "" (string) +SystemManager.service.services[5].modes.default.enabled = false (bool) +SystemManager.service.services[5].modes.service.enabled = false (bool) +SystemManager.service.services[5].name = "nlu" (string) +SystemManager.service.services[5].order = 2 (int) +SystemManager.service.services[5].shutdown_timeout = 10000 (int) +SystemManager.service.services[5].startup_timeout = 10000 (int) +SystemManager.service.services[6].crash_code = "SERVICE_CRASH_IDENTITY" (string) +SystemManager.service.services[6].executable = "/usr/local/bin/jibo-identity-service" (string) +SystemManager.service.services[6].modes.certification.enabled = false (bool) +SystemManager.service.services[6].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[6].modes.default.arguments[1] = "/usr/local/etc/jibo-identity-service.json" (string) +SystemManager.service.services[6].modes.default.directory = "" (string) +SystemManager.service.services[6].modes.default.enabled = true (bool) +SystemManager.service.services[6].modes.default.environment.GLOG_minloglevel = "2" (string) +SystemManager.service.services[6].modes.service.enabled = false (bool) +SystemManager.service.services[6].name = "identity" (string) +SystemManager.service.services[6].order = 2 (int) +SystemManager.service.services[6].shutdown_timeout = 10000 (int) +SystemManager.service.services[6].startup_timeout = 10000 (int) +SystemManager.service.services[7].crash_code = "SERVICE_CRASH_LPS" (string) +SystemManager.service.services[7].executable = "/usr/local/bin/jibo-lps-service" (string) +SystemManager.service.services[7].modes.certification.enabled = false (bool) +SystemManager.service.services[7].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[7].modes.default.arguments[1] = "/usr/local/etc/jibo-lps-service.json" (string) +SystemManager.service.services[7].modes.default.directory = "" (string) +SystemManager.service.services[7].modes.default.enabled = true (bool) +SystemManager.service.services[7].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[7].modes.default.environment.GST_GL_XINITTHREADS = "1" (string) +SystemManager.service.services[7].modes.default.environment.GST_REGISTRY = "/usr/share/gstreamer-1.0/registry.$(uname -m).bin" (string) +SystemManager.service.services[7].modes.default.environment.GST_REGISTRY_UPDATE = "no" (string) +SystemManager.service.services[7].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[7].name = "lps" (string) +SystemManager.service.services[7].order = 3 (int) +SystemManager.service.services[7].shutdown_timeout = 10000 (int) +SystemManager.service.services[7].startup_timeout = 60000 (int) +SystemManager.service.services[8].crash_code = "SERVICE_CRASH_SECURE_TRANSFER" (string) +SystemManager.service.services[8].executable = "/usr/bin/node" (string) +SystemManager.service.services[8].modes.certification.enabled = false (bool) +SystemManager.service.services[8].modes.default.arguments[0] = "/usr/local/bin/jibo-sts/index.js" (string) +SystemManager.service.services[8].modes.default.directory = "" (string) +SystemManager.service.services[8].modes.default.enabled = true (bool) +SystemManager.service.services[8].modes.int-developer.arguments[0] = "--inspect=10775" (string) +SystemManager.service.services[8].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-sts/index.js" (string) +SystemManager.service.services[8].modes.int-developer.directory = "" (string) +SystemManager.service.services[8].modes.int-developer.enabled = true (bool) +SystemManager.service.services[8].modes.service.enabled = false (bool) +SystemManager.service.services[8].name = "secure-transfer" (string) +SystemManager.service.services[8].order = 4 (int) +SystemManager.service.services[8].shutdown_timeout = 10000 (int) +SystemManager.service.services[8].startup_timeout = 10000 (int) +SystemManager.service.services[9].crash_code = "SERVICE_CRASH_SECURITY_CONTROLLER_SERVICE" (string) +SystemManager.service.services[9].executable = "/usr/bin/node" (string) +SystemManager.service.services[9].modes.certification.enabled = false (bool) +SystemManager.service.services[9].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-scs.js" (string) +SystemManager.service.services[9].modes.default.directory = "" (string) +SystemManager.service.services[9].modes.default.enabled = true (bool) +SystemManager.service.services[9].modes.int-developer.arguments[0] = "--inspect=10226" (string) +SystemManager.service.services[9].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-scs.js" (string) +SystemManager.service.services[9].modes.int-developer.directory = "" (string) +SystemManager.service.services[9].modes.int-developer.enabled = true (bool) +SystemManager.service.services[9].modes.service.enabled = false (bool) +SystemManager.service.services[9].name = "security-controller-service" (string) +SystemManager.service.services[9].order = 4 (int) +SystemManager.service.services[9].shutdown_timeout = 10000 (int) +SystemManager.service.services[9].startup_timeout = 10000 (int) +SystemManager.service.services[10].crash_code = "SERVICE_CRASH_MEDIA_MANAGER" (string) +SystemManager.service.services[10].executable = "/usr/bin/node" (string) +SystemManager.service.services[10].modes.certification.enabled = false (bool) +SystemManager.service.services[10].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-mms.js" (string) +SystemManager.service.services[10].modes.default.directory = "" (string) +SystemManager.service.services[10].modes.default.enabled = true (bool) +SystemManager.service.services[10].modes.int-developer.arguments[0] = "--inspect=10225" (string) +SystemManager.service.services[10].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-mms.js" (string) +SystemManager.service.services[10].modes.int-developer.directory = "" (string) +SystemManager.service.services[10].modes.int-developer.enabled = true (bool) +SystemManager.service.services[10].modes.service.enabled = false (bool) +SystemManager.service.services[10].name = "media-manager" (string) +SystemManager.service.services[10].order = 4 (int) +SystemManager.service.services[10].shutdown_timeout = 10000 (int) +SystemManager.service.services[10].startup_timeout = 10000 (int) +SystemManager.service.services[11].crash_code = "SERVICE_CRASH_MONITOR" (string) +SystemManager.service.services[11].executable = "/usr/local/bin/jibo-system-monitoring-service" (string) +SystemManager.service.services[11].modes.certification.enabled = false (bool) +SystemManager.service.services[11].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[11].modes.default.arguments[1] = "/usr/local/etc/jibo-system-monitoring-service.json" (string) +SystemManager.service.services[11].modes.default.directory = "" (string) +SystemManager.service.services[11].modes.default.enabled = true (bool) +SystemManager.service.services[11].name = "monitor" (string) +SystemManager.service.services[11].order = 4 (int) +SystemManager.service.services[11].shutdown_timeout = 10000 (int) +SystemManager.service.services[11].startup_timeout = 10000 (int) +SystemManager.service.services[12].crash_code = "SERVICE_CRASH_SERVER" (string) +SystemManager.service.services[12].executable = "/usr/local/bin/jibo-server-service" (string) +SystemManager.service.services[12].modes.certification.enabled = false (bool) +SystemManager.service.services[12].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[12].modes.default.arguments[1] = "/usr/local/etc/jibo-server-service.json" (string) +SystemManager.service.services[12].modes.default.directory = "" (string) +SystemManager.service.services[12].modes.default.enabled = true (bool) +SystemManager.service.services[12].modes.service.enabled = false (bool) +SystemManager.service.services[12].name = "server" (string) +SystemManager.service.services[12].order = 4 (int) +SystemManager.service.services[12].shutdown_timeout = 10000 (int) +SystemManager.service.services[12].startup_timeout = 10000 (int) +SystemManager.service.services[13].crash_code = "SERVICE_CRASH_SSM" (string) +SystemManager.service.services[13].executable = "/usr/bin/node" (string) +SystemManager.service.services[13].modes.certification.enabled = false (bool) +SystemManager.service.services[13].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/jibo-ssm.js" (string) +SystemManager.service.services[13].modes.default.directory = "" (string) +SystemManager.service.services[13].modes.default.enabled = true (bool) +SystemManager.service.services[13].modes.default.environment.DISPLAY = ":0" (string) +SystemManager.service.services[13].modes.default.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[13].modes.default.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[13].modes.default.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[13].modes.default.environment.XDG_CONFIG_HOME = "/tmp/.config" (string) +SystemManager.service.services[13].modes.int-developer.arguments[0] = "--inspect=10223" (string) +SystemManager.service.services[13].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-ssm.js" (string) +SystemManager.service.services[13].modes.int-developer.directory = "" (string) +SystemManager.service.services[13].modes.int-developer.enabled = true (bool) +SystemManager.service.services[13].modes.int-developer.environment.DISPLAY = ":0" (string) +SystemManager.service.services[13].modes.int-developer.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[13].modes.int-developer.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[13].modes.int-developer.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[13].modes.int-developer.environment.XDG_CONFIG_HOME = "/tmp/.config" (string) +SystemManager.service.services[13].modes.service.enabled = false (bool) +SystemManager.service.services[13].name = "ssm" (string) +SystemManager.service.services[13].order = 5 (int) +SystemManager.service.services[13].shutdown_timeout = 10000 (int) +SystemManager.service.services[13].startup_timeout = 60000 (int) +SystemManager.service.services[14].crash_code = "SERVICE_CRASH_EXPRESSION" (string) +SystemManager.service.services[14].executable = "/usr/bin/node" (string) +SystemManager.service.services[14].modes.certification.enabled = false (bool) +SystemManager.service.services[14].modes.default.arguments[0] = "/usr/local/bin/jibo-ssm/lib/expression-process.js" (string) +SystemManager.service.services[14].modes.default.directory = "" (string) +SystemManager.service.services[14].modes.default.enabled = true (bool) +SystemManager.service.services[14].modes.default.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[14].modes.default.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[14].modes.int-developer.arguments[0] = "--inspect=10224" (string) +SystemManager.service.services[14].modes.int-developer.arguments[1] = "/usr/local/bin/jibo-ssm/jibo-expression.js" (string) +SystemManager.service.services[14].modes.int-developer.directory = "" (string) +SystemManager.service.services[14].modes.int-developer.enabled = true (bool) +SystemManager.service.services[14].modes.int-developer.environment.NODE_PATH = "/usr/lib/node_modules" (string) +SystemManager.service.services[14].modes.int-developer.environment.RUNMODE = "ON_ROBOT" (string) +SystemManager.service.services[14].modes.service.enabled = false (bool) +SystemManager.service.services[14].name = "expression" (string) +SystemManager.service.services[14].order = 4 (int) +SystemManager.service.services[14].shutdown_timeout = 10000 (int) +SystemManager.service.services[14].startup_timeout = 60000 (int) +SystemManager.service.services[15].crash_code = "SERVICE_CRASH_CERTIFICATION" (string) +SystemManager.service.services[15].executable = "/usr/local/bin/jibo-certification-service" (string) +SystemManager.service.services[15].modes.certification.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.certification.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.certification.directory = "" (string) +SystemManager.service.services[15].modes.certification.enabled = true (bool) +SystemManager.service.services[15].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.default.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.default.directory = "" (string) +SystemManager.service.services[15].modes.default.enabled = false (bool) +SystemManager.service.services[15].modes.service.arguments[0] = "-c" (string) +SystemManager.service.services[15].modes.service.arguments[1] = "/usr/local/etc/jibo-certification-service.json" (string) +SystemManager.service.services[15].modes.service.directory = "" (string) +SystemManager.service.services[15].modes.service.enabled = true (bool) +SystemManager.service.services[15].name = "certification" (string) +SystemManager.service.services[15].order = 0 (int) +SystemManager.service.services[15].shutdown_timeout = 10000 (int) +SystemManager.service.services[15].startup_timeout = 10000 (int) +SystemManager.service.services[16].crash_code = "SERVICE_CRASH_SERVICE_CENTER" (string) +SystemManager.service.services[16].executable = "/usr/local/bin/jibo-service-center-service" (string) +SystemManager.service.services[16].modes.default.arguments[0] = "-c" (string) +SystemManager.service.services[16].modes.default.arguments[1] = "/usr/local/etc/jibo-service-center-service.json" (string) +SystemManager.service.services[16].modes.default.directory = "" (string) +SystemManager.service.services[16].modes.default.enabled = false (bool) +SystemManager.service.services[16].modes.service.arguments[0] = "-c" (string) +SystemManager.service.services[16].modes.service.arguments[1] = "/usr/local/etc/jibo-service-center-service.json" (string) +SystemManager.service.services[16].modes.service.directory = "" (string) +SystemManager.service.services[16].modes.service.enabled = true (bool) +SystemManager.service.services[16].modes.service.environment.DISPLAY = ":0" (string) +SystemManager.service.services[16].modes.service.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.service.services[16].name = "service-center" (string) +SystemManager.service.services[16].order = 5 (int) +SystemManager.service.services[16].shutdown_timeout = 10000 (int) +SystemManager.service.services[16].startup_timeout = 10000 (int) +SystemManager.skill.arguments[0] = "--remote-debugging-port=9222" (string) +SystemManager.skill.arguments[1] = "/usr/local/bin/jibo-ssm/skill-main.js" (string) +SystemManager.skill.environment.DISPLAY = ":0" (string) +SystemManager.skill.environment.JIBO_GQA_ENDPOINT = "http://192.168.1.28:8080" (string) +SystemManager.skill.environment.JIBO_HUB_SHIM_HOST = "192.168.1.28" (string) +SystemManager.skill.environment.XAUTHORITY = "/tmp/.Xauthority" (string) +SystemManager.skill.environment.XDG_CONFIG_HOME = "/opt/home/jibo-skill/.config" (string) +SystemManager.skill.executable = "/usr/bin/electron/electron" (string) +SystemManager.skill.modes.developer.user = "jibo-skill" (string) +SystemManager.skill.modes.int-developer.user = "jibo-skill" (string) +SystemManager.skill.modes.normal.user = "jibo-skill" (string) +SystemManager.skill.modes.oobe.user = "jibo-skill" (string) +SystemManager.skill.path.devs[0] = "/opt/jibo/Skills" (string) +SystemManager.skill.path.jibo[0] = "/opt/jibo/Jibo/Skills/@be" (string) +SystemManager.skill.path.jibo[1] = "/opt/jibo/Jibo/Skills" (string) +SystemManager.storage.mount_entries_file = "/proc/mounts" (string) +SystemManager.storage.semantic.jibo = "/opt/jibo/Jibo" (string) +SystemManager.storage.semantic.knowledge = "/opt/jibo/Knowledge" (string) +SystemManager.storage.semantic.photos = "/opt/jibo/Photos" (string) +SystemManager.storage.semantic.recordings = "/opt/jibo/Recordings" (string) +SystemManager.storage.semantic.skills = "/opt/jibo/Skills" (string) +SystemManager.time.hwclock.arguments[0] = "--systohc" (string) +SystemManager.time.hwclock.command = "/sbin/hwclock" (string) +SystemManager.time.localtime_path = "/var/etc/localtime" (string) +SystemManager.time.ntpd_init = "/etc/init.d/S66ntp" (string) +SystemManager.time.ntpdate.arguments[0] = "-b" (string) +SystemManager.time.ntpdate.arguments[1] = "-t" (string) +SystemManager.time.ntpdate.arguments[2] = "3" (string) +SystemManager.time.ntpdate.arguments[3] = "0.north-america.pool.ntp.org" (string) +SystemManager.time.ntpdate.command = "/usr/bin/ntpdate" (string) +SystemManager.time.timezone_path = "/var/etc/timezone" (string) +SystemManager.time.zoneinfo_path = "/usr/share/zoneinfo" (string) +SystemManager.update.subsystems.@be/be.apply_method = "skill" (string) +SystemManager.update.subsystems.@be/be.default_order = 6 (int) +SystemManager.update.subsystems.@be/be.version_check = "skill" (string) +SystemManager.update.subsystems.fin-goods-test.apply_method = "skill" (string) +SystemManager.update.subsystems.fin-goods-test.default_order = 4 (int) +SystemManager.update.subsystems.fin-goods-test.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-diagnostics.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-diagnostics.default_order = 3 (int) +SystemManager.update.subsystems.jibo-diagnostics.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-rhino.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-rhino.default_order = 7 (int) +SystemManager.update.subsystems.jibo-rhino.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-tbd.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-tbd.default_order = 9 (int) +SystemManager.update.subsystems.jibo-tbd.version_check = "skill" (string) +SystemManager.update.subsystems.jibo-trivia.apply_method = "skill" (string) +SystemManager.update.subsystems.jibo-trivia.default_order = 8 (int) +SystemManager.update.subsystems.jibo-trivia.version_check = "skill" (string) +SystemManager.update.subsystems.oobe-config.apply_method = "skill" (string) +SystemManager.update.subsystems.oobe-config.default_order = 5 (int) +SystemManager.update.subsystems.oobe-config.version_check = "skill" (string) +SystemManager.update.subsystems.os.apply_method = "system" (string) +SystemManager.update.subsystems.os.default_order = 1 (int) +SystemManager.update.subsystems.os.version_check = "os" (string) +SystemManager.update.subsystems.services.apply_method = "system" (string) +SystemManager.update.subsystems.services.default_order = 2 (int) +SystemManager.update.subsystems.services.version_check = "services" (string) +SystemManager.wifi.udhcpc.executable = "udhcpc" (string) +SystemManager.wifi.udhcpc.options = "-R -b -t 3 -T 5 -A 5" (string) +SystemManager.wifi.wpa.interface = "wlan0" (string) +SystemManager.wifi.wpa.monitor_interval = 1000 (int) +SystemManager.wifi.wpa.reconnect_interval = 15000 (int) +SystemManager.wifi.wpa.runtime = "/var/run/wpa_supplicant" (string) +WebCore.fileRoot = "/usr/local/var/www/system" (string) +WebCore.serverPort = 8585 (int) +logging.loggers.l4.level = "information" (string) +logging.loggers.l4.name = "SystemManager" (string) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-system-monitoring-service.json + +Source in this workspace: `usr/local/etc/jibo-system-monitoring-service.json` + +```text +ErrorTracker.views[0].errors[0] = "LOW_ROBOT_STORAGE" (string) +ErrorTracker.views[0].name = "SystemMonitoringService" (string) +SystemMonitoringService.error.connection_timeout = 5000 (int) +SystemMonitoringService.error.polling_interval = 10000 (int) +SystemMonitoringService.health.connection_timeout = 30000 (int) +SystemMonitoringService.health.polling_interval = 1800000 (int) +SystemMonitoringService.health.upload.arguments[0] = "--credentials" (string) +SystemMonitoringService.health.upload.arguments[1] = "/var/jibo/credentials.json" (string) +SystemMonitoringService.health.upload.arguments[2] = "--kind" (string) +SystemMonitoringService.health.upload.arguments[3] = "HEALTH" (string) +SystemMonitoringService.health.upload.directory = "" (string) +SystemMonitoringService.health.upload.executable = "/usr/bin/jibo-log-client-async" (string) +SystemMonitoringService.registryPort = 8181 (int) +SystemMonitoringService.serverPort = 4111 (int) +SystemMonitoringService.storage.low_storage_byte = 1073741824 (int) +SystemMonitoringService.storage.mount_entries_file = "/proc/mounts" (string) +SystemMonitoringService.storage.polling_interval = 60000 (int) +SystemMonitoringService.storage.semantic.jibo = "/opt/jibo/Jibo" (string) +SystemMonitoringService.storage.semantic.knowledge = "/opt/jibo/Knowledge" (string) +SystemMonitoringService.storage.semantic.photos = "/opt/jibo/Photos" (string) +SystemMonitoringService.storage.semantic.recordings = "/opt/jibo/Recordings" (string) +SystemMonitoringService.storage.semantic.skills = "/opt/jibo/Skills" (string) +SystemMonitoringService.storage.semantic.tmp = "/tmp" (string) +WebCore.fileRoot = "/usr/local/var/www/systemMonitor" (string) +WebCore.serverPort = 4111 (int) +logging.loggers.root.level = "warning" (string) +``` + +### /usr/local/etc/jibo-test-capture-service.json + +Source in this workspace: `usr/local/etc/jibo-test-capture-service.json` + +```text +TestCaptureService.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +TestCaptureService.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +TestCaptureService.camera.cuda.devices[0].ae.gainP = 0.02 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinRatioThreshold = 0.01 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinSegmentedAvgYThreshold = 0.8 (float) +TestCaptureService.camera.cuda.devices[0].ae.skinSegmentedTargetY = 0.5 (float) +TestCaptureService.camera.cuda.devices[0].ae.targetY = 0.6 (float) +TestCaptureService.camera.cuda.devices[0].awb.P = 0.15 (float) +TestCaptureService.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +TestCaptureService.camera.cuda.devices[0].awb.numSamples = 1000 (int) +TestCaptureService.camera.cuda.devices[0].awb.targetU = 0.505 (float) +TestCaptureService.camera.cuda.devices[0].awb.targetV = 0.5 (float) +TestCaptureService.camera.cuda.devices[0].bufferPoolSize = 4 (int) +TestCaptureService.camera.cuda.devices[0].enabled = true (bool) +TestCaptureService.camera.cuda.devices[0].gamma.B = 0.7 (float) +TestCaptureService.camera.cuda.devices[0].gamma.G = 0.7 (float) +TestCaptureService.camera.cuda.devices[0].gamma.R = 0.75 (float) +TestCaptureService.camera.cuda.devices[0].hFlip = true (bool) +TestCaptureService.camera.cuda.devices[0].height = 380 (int) +TestCaptureService.camera.cuda.devices[0].name = "Right Wide Eye" (string) +TestCaptureService.camera.cuda.devices[0].outputBufferFormats = 2 (int) +TestCaptureService.camera.cuda.devices[0].path = "/dev/video1" (string) +TestCaptureService.camera.cuda.devices[0].vFlip = true (bool) +TestCaptureService.camera.cuda.devices[0].width = 672 (int) +TestCaptureService.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +TestCaptureService.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +TestCaptureService.camera.cuda.devices[1].ae.gainP = 0.02 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinRatioThreshold = 0.01 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinSegmentedAvgYThreshold = 0.8 (float) +TestCaptureService.camera.cuda.devices[1].ae.skinSegmentedTargetY = 0.5 (float) +TestCaptureService.camera.cuda.devices[1].ae.targetY = 0.6 (float) +TestCaptureService.camera.cuda.devices[1].awb.P = 0.15 (float) +TestCaptureService.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +TestCaptureService.camera.cuda.devices[1].awb.numSamples = 1000 (int) +TestCaptureService.camera.cuda.devices[1].awb.targetU = 0.505 (float) +TestCaptureService.camera.cuda.devices[1].awb.targetV = 0.5 (float) +TestCaptureService.camera.cuda.devices[1].bufferPoolSize = 4 (int) +TestCaptureService.camera.cuda.devices[1].enabled = true (bool) +TestCaptureService.camera.cuda.devices[1].gamma.B = 0.7 (float) +TestCaptureService.camera.cuda.devices[1].gamma.G = 0.7 (float) +TestCaptureService.camera.cuda.devices[1].gamma.R = 0.75 (float) +TestCaptureService.camera.cuda.devices[1].hFlip = true (bool) +TestCaptureService.camera.cuda.devices[1].height = 380 (int) +TestCaptureService.camera.cuda.devices[1].name = "Left Narrow Eye" (string) +TestCaptureService.camera.cuda.devices[1].outputBufferFormats = 2 (int) +TestCaptureService.camera.cuda.devices[1].path = "/dev/video0" (string) +TestCaptureService.camera.cuda.devices[1].vFlip = true (bool) +TestCaptureService.camera.cuda.devices[1].width = 672 (int) +TestCaptureService.camera.file.format = "YUV420p" (string) +TestCaptureService.camera.file.videos[0] = "videos/video-000/video.json" (string) +TestCaptureService.camera.file.videos[1] = "videos/video-001/video.json" (string) +TestCaptureService.camera.type = "CUDA" (string) +TestCaptureService.camera.v4l2.devices.left = "/dev/video0" (string) +TestCaptureService.camera.v4l2.devices.right = "/dev/video1" (string) +TestCaptureService.registryPort = 8181 (int) +TestCaptureService.serverPort = 7979 (int) +WebCore.fileRoot = "/usr/local/var/www/capture-tools" (string) +WebCore.serverPort = 7979 (int) +``` + +### /usr/local/etc/jibo-test-capture.json + +Source in this workspace: `usr/local/etc/jibo-test-capture.json` + +```text +test.camera.cuda.devices[0].ae.errorY = 0.0001 (float) +test.camera.cuda.devices[0].ae.exposureP = 0.05 (float) +test.camera.cuda.devices[0].ae.gainP = 0.02 (float) +test.camera.cuda.devices[0].ae.targetY = 0.25 (float) +test.camera.cuda.devices[0].awb.P = 0.15 (float) +test.camera.cuda.devices[0].awb.grayThreshold = 0.3 (float) +test.camera.cuda.devices[0].awb.numSamples = 1000 (int) +test.camera.cuda.devices[0].awb.seed = 0 (int) +test.camera.cuda.devices[0].awb.targetU = 0.505 (float) +test.camera.cuda.devices[0].awb.targetV = 0.5 (float) +test.camera.cuda.devices[0].bufferPoolSize = 4 (int) +test.camera.cuda.devices[0].enabled = true (bool) +test.camera.cuda.devices[0].gamma.B = 0.6 (float) +test.camera.cuda.devices[0].gamma.G = 0.6 (float) +test.camera.cuda.devices[0].gamma.R = 0.6 (float) +test.camera.cuda.devices[0].hFlip = true (bool) +test.camera.cuda.devices[0].height = 720 (int) +test.camera.cuda.devices[0].name = "Right Wide Eye" (string) +test.camera.cuda.devices[0].outputBufferFormats = 0 (int) +test.camera.cuda.devices[0].path = "/dev/video1" (string) +test.camera.cuda.devices[0].vFlip = true (bool) +test.camera.cuda.devices[0].width = 1280 (int) +test.camera.cuda.devices[1].ae.errorY = 0.0001 (float) +test.camera.cuda.devices[1].ae.exposureP = 0.05 (float) +test.camera.cuda.devices[1].ae.gainP = 0.02 (float) +test.camera.cuda.devices[1].ae.targetY = 0.25 (float) +test.camera.cuda.devices[1].awb.P = 0.15 (float) +test.camera.cuda.devices[1].awb.grayThreshold = 0.3 (float) +test.camera.cuda.devices[1].awb.numSamples = 1000 (int) +test.camera.cuda.devices[1].awb.seed = 0 (int) +test.camera.cuda.devices[1].awb.targetU = 0.505 (float) +test.camera.cuda.devices[1].awb.targetV = 0.5 (float) +test.camera.cuda.devices[1].bufferPoolSize = 4 (int) +test.camera.cuda.devices[1].enabled = true (bool) +test.camera.cuda.devices[1].gamma.B = 0.6 (float) +test.camera.cuda.devices[1].gamma.G = 0.6 (float) +test.camera.cuda.devices[1].gamma.R = 0.6 (float) +test.camera.cuda.devices[1].hFlip = true (bool) +test.camera.cuda.devices[1].height = 380 (int) +test.camera.cuda.devices[1].name = "Left Narrow Eye" (string) +test.camera.cuda.devices[1].outputBufferFormats = 0 (int) +test.camera.cuda.devices[1].path = "/dev/video0" (string) +test.camera.cuda.devices[1].vFlip = true (bool) +test.camera.cuda.devices[1].width = 672 (int) +test.camera.file.format = "YUV420p" (string) +test.camera.file.videos[0] = "videos/video-000/video.json" (string) +test.camera.file.videos[1] = "videos/video-001/video.json" (string) +test.camera.type = "CUDA" (string) +test.camera.v4l2.devices.left = "/dev/video0" (string) +test.camera.v4l2.devices.right = "/dev/video1" (string) +test.handler.ae_lock_count = 190 (int) +test.handler.awb_lock_count = 190 (int) +test.handler.display.enabled = true (bool) +test.handler.displayCycle.enabled = false (bool) +test.handler.fps.enabled = false (bool) +test.handler.max_exposure = 0.033 (float) +test.handler.min_exposure = 0.012 (float) +test.handler.num_frames = 0 (int) +test.handler.profiler.enabled = true (bool) +test.handler.record.directory = "/tmp/jibo-cap/" (string) +test.handler.record.enabled = false (bool) +test.handler.record.padding = 5 (int) +test.handler.record.skip_count = 180 (int) +test.handler.recordAxes.enabled = false (bool) +test.handler.recordAxes.padding = 5 (int) +test.handler.recordAxes.uri = "http://localhost:8282/axis_state" (string) +``` + +### /usr/local/etc/jibo-tts-service.json + +Source in this workspace: `usr/local/etc/jibo-tts-service.json` + +```text +PostFilterMap.affectionateSwitch = "affectionateAmount" (string) +PostFilterMap.ah = "6" (string) +PostFilterMap.aliasSwitch = "aliasAmount" (string) +PostFilterMap.analysisSwitch = "analysisSwitch" (string) +PostFilterMap.argh = "22" (string) +PostFilterMap.autotuneSwitch = "autotunePitch" (string) +PostFilterMap.aw = "16" (string) +PostFilterMap.chorusSwitch = "chorusAmount" (string) +PostFilterMap.cool = "9" (string) +PostFilterMap.disapproveSwitch = "disapproveAmount" (string) +PostFilterMap.done = "14" (string) +PostFilterMap.emphasisSwitch = "emphasisAmount" (string) +PostFilterMap.excitedSwitch = "excitedAmount" (string) +PostFilterMap.fadeSwitch = "fadeAmount" (string) +PostFilterMap.flangerSwitch = "flangerAmount" (string) +PostFilterMap.freqshiftSwitch = "freqshiftAmount" (string) +PostFilterMap.huh = "20" (string) +PostFilterMap.i_love_to_1 = "24" (string) +PostFilterMap.i_love_to_2 = "25" (string) +PostFilterMap.i_love_to_3 = "26" (string) +PostFilterMap.i_love_to_4 = "27" (string) +PostFilterMap.i_love_to_5 = "28" (string) +PostFilterMap.i_love_to_6 = "29" (string) +PostFilterMap.laugh = "11" (string) +PostFilterMap.laugh2 = "12" (string) +PostFilterMap.laughterSwitch = "laughterAmount" (string) +PostFilterMap.listSwitch = "listAmount" (string) +PostFilterMap.makeSimilar = "makeSimilar" (string) +PostFilterMap.masteringSwitch = "masteringAmount" (string) +PostFilterMap.my_bad = "17" (string) +PostFilterMap.neutralSwitch = "neutralAmount" (string) +PostFilterMap.nm_um = "23" (string) +PostFilterMap.oh = "7" (string) +PostFilterMap.ok = "4" (string) +PostFilterMap.oo = "1" (string) +PostFilterMap.ooo = "5" (string) +PostFilterMap.oops = "18" (string) +PostFilterMap.perfect = "3" (string) +PostFilterMap.phaserSwitch = "phaserAmount" (string) +PostFilterMap.pitchshiftSwitch = "pitchStrength" (string) +PostFilterMap.resonatorSwitch = "resonatorPitch" (string) +PostFilterMap.ringmodSwitch = "ringmodFreq" (string) +PostFilterMap.sorrowSwitch = "sorrowAmount" (string) +PostFilterMap.sweet = "13" (string) +PostFilterMap.triggerJibonics = "bang" (string) +PostFilterMap.um = "19" (string) +PostFilterMap.vocoderSwitch = "vocoderChord" (string) +PostFilterMap.what = "15" (string) +PostFilterMap.whoa = "21" (string) +PostFilterMap.woo_hoo_hoo = "10" (string) +PostFilterMap.worriedSwitch = "worriedAmount" (string) +PostFilterMap.wow = "2" (string) +PostFilterMap.your_welcome = "8" (string) +TTSService.alsaPlaybackDevice = "TTSOut" (string) +TTSService.audioDriver = "alsa" (string) +TTSService.effectsDir = "/usr/local/share/ttsservice/effects" (string) +TTSService.enableFadeOut = "FALSE" (string) +TTSService.enableJiboDefaultSwitch = "FALSE" (string) +TTSService.enablePD = "FALSE" (string) +TTSService.enableTextNorm = "TRUE" (string) +TTSService.frontEnd = "JIBO" (string) +TTSService.maxRSSMemory = 250000 (int) +TTSService.postToPerformanceService = "TRUE" (string) +TTSService.resourcePath = "/usr/local/share/ttsservice/voices/en_us_world/" (string) +logging.jibo_message_prefix = "C" (string) +logging.loggers.l1.level = "information" (string) +logging.loggers.l1.name = "TTSService" (string) +logging.loggers.l2.level = "information" (string) +logging.loggers.l2.name = "Application" (string) +logging.loggers.root.level = "warning" (string) +voiceParams.allPass_a = "0.76" (string) +voiceParams.buffer_size = "1024" (string) +voiceParams.fft_size = "1024" (string) +voiceParams.framerate_p = "240" (string) +voiceParams.frontendResource = "/usr/local/share/ttsservice/voices/en_us/griffin/fsts/" (string) +voiceParams.gvMCEP_jm = "0.9" (string) +voiceParams.halftone_fm = "3" (string) +voiceParams.maxChars = "1000" (string) +voiceParams.mgc_order = "60" (string) +voiceParams.mode = "text" (string) +voiceParams.outmode = "stream" (string) +voiceParams.pitchbw_jf = "0.40" (string) +voiceParams.postFilter_b = "0.40" (string) +voiceParams.samplerate_s = "48000" (string) +voiceParams.speed_r = "1" (string) +voiceParams.unvoicedvoice_u = "0.15" (string) +voiceParams.volume_linear = "0.65" (string) +webCore.fileRoot = "/usr/local/var/www/ttsservice" (string) +webCore.requestLogging = false (bool) +webCore.serverPort = 8089 (int) +``` + +### /usr/local/etc/lps/cameras.json + +Source in this workspace: `usr/local/etc/lps/cameras.json` + +```text +controls[0].ae.ev = 0 (int) +controls[0].ae.lock = false (bool) +controls[0].ae.manual = false (bool) +controls[0].ae.manualExposure = 0.03333 (float) +controls[0].ae.manualGain = 1 (int) +controls[0].ae.manualMode = "default" (string) +controls[0].ae.targetY = 0.4 (float) +controls[0].ae.time.high = 0.033 (float) +controls[0].ae.time.low = 0.0016667 (float) +controls[0].awb.gammaBlue = 0.7 (float) +controls[0].awb.gammaCb = 0.78 (float) +controls[0].awb.gammaCr = 0.78 (float) +controls[0].awb.gammaGreen = 0.7 (float) +controls[0].awb.gammaRed = 0.7 (float) +controls[0].awb.lock = false (bool) +controls[0].awb.manual = false (bool) +controls[0].awb.manualBlueGain = 1024 (int) +controls[0].awb.manualGreenGain = 1024 (int) +controls[0].awb.manualRedGain = 1024 (int) +controls[0].hFlip = true (bool) +controls[0].height = 720 (int) +controls[0].outputBuffersConfIndex = 2 (int) +controls[0].vFlip = true (bool) +controls[0].width = 1280 (int) +controls[1].ae.ev = 0 (int) +controls[1].ae.lock = false (bool) +controls[1].ae.manual = false (bool) +controls[1].ae.manualExposure = 0.03333 (float) +controls[1].ae.manualGain = 1 (int) +controls[1].ae.manualMode = "default" (string) +controls[1].ae.targetY = 0.4 (float) +controls[1].ae.time.high = 0.033 (float) +controls[1].ae.time.low = 0.0016667 (float) +controls[1].awb.gammaBlue = 0.7 (float) +controls[1].awb.gammaCb = 0.78 (float) +controls[1].awb.gammaCr = 0.78 (float) +controls[1].awb.gammaGreen = 0.7 (float) +controls[1].awb.gammaRed = 0.7 (float) +controls[1].awb.lock = false (bool) +controls[1].awb.manual = false (bool) +controls[1].awb.manualBlueGain = 1024 (int) +controls[1].awb.manualGreenGain = 1024 (int) +controls[1].awb.manualRedGain = 1024 (int) +controls[1].hFlip = true (bool) +controls[1].height = 720 (int) +controls[1].outputBuffersConfIndex = 2 (int) +controls[1].vFlip = true (bool) +controls[1].width = 1280 (int) +cuda.devices[0].ae.avgYThreshold = 0.8 (float) +cuda.devices[0].ae.errorY = 0.0001 (float) +cuda.devices[0].ae.exposureP = 0.02 (float) +cuda.devices[0].ae.gainP = 0.02 (float) +cuda.devices[0].ae.numRegions = 64 (int) +cuda.devices[0].ae.numSamples = 1000 (int) +cuda.devices[0].ae.skinRatioThreshold = 0.01 (float) +cuda.devices[0].ae.skinSegmentedAvgYThreshold = 0.8 (float) +cuda.devices[0].ae.skinSegmentedTargetY = 0.43 (float) +cuda.devices[0].ae.targetY = 0.6 (float) +cuda.devices[0].awb.P = 0.15 (float) +cuda.devices[0].awb.grayThreshold = 0.3 (float) +cuda.devices[0].awb.numSamples = 1000 (int) +cuda.devices[0].awb.seed = 0 (int) +cuda.devices[0].awb.targetU = 0.505 (float) +cuda.devices[0].awb.targetV = 0.5 (float) +cuda.devices[0].bufferPoolSize = 10 (int) +cuda.devices[0].enabled = true (bool) +cuda.devices[0].gamma.B = 0.7 (float) +cuda.devices[0].gamma.G = 0.7 (float) +cuda.devices[0].gamma.R = 0.7 (float) +cuda.devices[0].hFlip = true (bool) +cuda.devices[0].height = 720 (int) +cuda.devices[0].name = "Camera-0" (string) +cuda.devices[0].numSamples = 10000 (int) +cuda.devices[0].outputBufferFormats = 2 (int) +cuda.devices[0].path = "/dev/video1" (string) +cuda.devices[0].vFlip = true (bool) +cuda.devices[0].width = 1280 (int) +cuda.devices[1].ae.avgYThreshold = 0.8 (float) +cuda.devices[1].ae.errorY = 0.0001 (float) +cuda.devices[1].ae.exposureP = 0.02 (float) +cuda.devices[1].ae.gainP = 0.02 (float) +cuda.devices[1].ae.numSamples = 1000 (int) +cuda.devices[1].ae.skinRatioThreshold = 0.01 (float) +cuda.devices[1].ae.skinSegmentedAvgYThreshold = 0.8 (float) +cuda.devices[1].ae.skinSegmentedTargetY = 0.46 (float) +cuda.devices[1].ae.targetY = 0.6 (float) +cuda.devices[1].awb.P = 0.15 (float) +cuda.devices[1].awb.grayThreshold = 0.3 (float) +cuda.devices[1].awb.numSamples = 1000 (int) +cuda.devices[1].awb.seed = 0 (int) +cuda.devices[1].awb.targetU = 0.505 (float) +cuda.devices[1].awb.targetV = 0.5 (float) +cuda.devices[1].bufferPoolSize = 4 (int) +cuda.devices[1].enabled = true (bool) +cuda.devices[1].gamma.B = 0.7 (float) +cuda.devices[1].gamma.G = 0.7 (float) +cuda.devices[1].gamma.R = 0.7 (float) +cuda.devices[1].hFlip = true (bool) +cuda.devices[1].height = 720 (int) +cuda.devices[1].name = "Camera-1" (string) +cuda.devices[1].numSamples = 10000 (int) +cuda.devices[1].outputBufferFormats = 2 (int) +cuda.devices[1].path = "/dev/video0" (string) +cuda.devices[1].vFlip = true (bool) +cuda.devices[1].width = 1280 (int) +file.format = "YUV420p" (string) +file.videos[0] = "videos/video-000/video.json" (string) +file.videos[1] = "videos/video-001/video.json" (string) +type = "CUDA" (string) +v4l2.devices.left = "/dev/video0" (string) +v4l2.devices.right = "/dev/video1" (string) +``` + +### /usr/local/etc/lps/entityConfig.json + +Source in this workspace: `usr/local/etc/lps/entityConfig.json` + +```text +default_motion.debug = false (bool) +default_motion.description = "motion" (string) +default_motion.is_static = false (bool) +default_motion.max_audio_measure_age = 0.1 (float) +default_motion.max_part_measure_age = 1.0 (float) +default_motion.max_track_age = 20.0 (float) +default_motion.motion.auto_add_tracker = false (bool) +default_motion.motion.auto_add_tracker_skip = 5 (int) +default_motion.motion.confidence_filter = 0.9 (float) +default_motion.motion.debug = false (bool) +default_motion.motion.default_ramge = 2.5 (float) +default_motion.motion.enable_back_projection = true (bool) +default_motion.motion.extent_x = 0.25 (float) +default_motion.motion.extent_y = 0.25 (float) +default_motion.motion.extent_z = 0.25 (float) +default_motion.motion.fixed_pseudo_range = 2.0 (float) +default_motion.motion.linear_psd = 0.1 (float) +default_motion.motion.min_state_covariance = 0.001 (float) +default_motion.motion.name = "motion" (string) +default_motion.motion.pose_filter = 0.0 (float) +default_motion.motion.pseudo_range_covariance = 0.5 (float) +default_motion.motion.tracker_1.image_tracker.base_covar = 200.0 (float) +default_motion.motion.tracker_1.image_tracker.debug = false (bool) +default_motion.motion.tracker_1.image_tracker.image_debug = false (bool) +default_motion.motion.tracker_1.image_tracker.image_height = 128 (int) +default_motion.motion.tracker_1.image_tracker.image_width = 128 (int) +default_motion.motion.tracker_1.image_tracker.measure_interval = 0.001 (float) +default_motion.motion.tracker_1.image_tracker.min_confidence = 0.001 (float) +default_motion.motion.tracker_1.image_tracker.model_confidence_filter = 0.5 (float) +default_motion.motion.tracker_1.image_tracker.name = "A" (string) +default_motion.motion.tracker_1.image_tracker.track_confidence_filter = 0.6 (float) +default_motion.motion.tracker_1.image_tracker.use_image_velocity = false (bool) +default_motion.motion.tracker_1.image_tracker.vel_filter = 0.75 (float) +default_motion.motion.tracker_1.image_tracker.vel_scale = 0.9 (float) +default_motion.motion.tracker_1.motion_tracker.background_threshold = 5 (int) +default_motion.motion.tracker_1.motion_tracker.camshift.area_aspect = 2.0 (float) +default_motion.motion.tracker_1.motion_tracker.camshift.area_scale = 3.0 (float) +default_motion.motion.tracker_1.motion_tracker.camshift.max_iterations = 6 (int) +default_motion.motion.tracker_1.motion_tracker.drop_area_too_big = 1600.0 (float) +default_motion.motion.tracker_1.motion_tracker.drop_area_too_small = 100.0 (float) +default_motion.motion.tracker_1.motion_tracker.search_size_horizontal_scale = 5 (int) +default_motion.motion.tracker_1.motion_tracker.search_size_vertical_scale = 5 (int) +default_motion.motion.tracker_1.tracker_class = "motion_tracker" (string) +default_motion.motion.tracker_type = "tracker_1" (string) +default_motion.motion.use_pseudo_range = true (bool) +default_motion.motion.vel_decay = 0.999 (float) +default_motion.motion.vel_limit = 3.0 (float) +default_motion.name = "motion" (string) +default_motion.out_fov_age_factor = 0.1 (float) +default_person.debug = false (bool) +default_person.description = "person" (string) +default_person.head.auto_add_tracker = false (bool) +default_person.head.auto_add_tracker_skip = 20 (int) +default_person.head.debug = false (bool) +default_person.head.default_ramge = 2.5 (float) +default_person.head.enable_back_projection = true (bool) +default_person.head.extent_x = 0.25 (float) +default_person.head.extent_y = 0.25 (float) +default_person.head.extent_z = 0.25 (float) +default_person.head.identity.alpha = 0.75 (float) +default_person.head.identity.cull = 0.1 (float) +default_person.head.linear_psd = 10.0 (float) +default_person.head.min_state_covariance = 0.0001 (float) +default_person.head.name = "head" (string) +default_person.head.pose_filter = 0.0 (float) +default_person.head.pseudo_range_covariance = 0.9 (float) +default_person.head.tracker_1.color_tracker.area_filter = 0.6 (float) +default_person.head.tracker_1.color_tracker.camshift.area_aspect = 1.2 (float) +default_person.head.tracker_1.color_tracker.camshift.area_scale = 10.0 (float) +default_person.head.tracker_1.color_tracker.camshift.max_iterations = 6 (int) +default_person.head.tracker_1.color_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_1.color_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_1.color_tracker.kmeans.K = 2 (int) +default_person.head.tracker_1.color_tracker.kmeans.convergence = 0.01 (float) +default_person.head.tracker_1.color_tracker.kmeans.max_iterations = 10 (int) +default_person.head.tracker_1.color_tracker.model.color_threshold_max = 25 (int) +default_person.head.tracker_1.color_tracker.model.color_threshold_min = 10 (int) +default_person.head.tracker_1.color_tracker.model.y_max = 250 (int) +default_person.head.tracker_1.color_tracker.model.y_min = 25 (int) +default_person.head.tracker_1.color_tracker.model_debug = false (bool) +default_person.head.tracker_1.color_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_1.color_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_1.color_tracker.track_debug = false (bool) +default_person.head.tracker_1.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_1.image_tracker.debug = false (bool) +default_person.head.tracker_1.image_tracker.image_debug = false (bool) +default_person.head.tracker_1.image_tracker.image_height = 360 (int) +default_person.head.tracker_1.image_tracker.image_width = 640 (int) +default_person.head.tracker_1.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_1.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_1.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_1.image_tracker.name = "A" (string) +default_person.head.tracker_1.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_1.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_1.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_1.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_1.tracker_class = "color_tracker" (string) +default_person.head.tracker_2.abcshift_tracker.area_aspect = 1.2 (float) +default_person.head.tracker_2.abcshift_tracker.area_filter = 0.6 (float) +default_person.head.tracker_2.abcshift_tracker.area_scale = 1.3 (float) +default_person.head.tracker_2.abcshift_tracker.background.binsX = 256 (int) +default_person.head.tracker_2.abcshift_tracker.background.binsY = 256 (int) +default_person.head.tracker_2.abcshift_tracker.background.maxX = 255 (int) +default_person.head.tracker_2.abcshift_tracker.background.maxY = 255 (int) +default_person.head.tracker_2.abcshift_tracker.background.minX = 0 (int) +default_person.head.tracker_2.abcshift_tracker.background.minY = 0 (int) +default_person.head.tracker_2.abcshift_tracker.bhattacharyya_threshold = 0.5 (float) +default_person.head.tracker_2.abcshift_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_2.abcshift_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_2.abcshift_tracker.foreground.binsX = 256 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.binsY = 256 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.maxX = 255 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.maxY = 255 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.minX = 0 (int) +default_person.head.tracker_2.abcshift_tracker.foreground.minY = 0 (int) +default_person.head.tracker_2.abcshift_tracker.max_iterations = 6 (int) +default_person.head.tracker_2.abcshift_tracker.model.color_threshold_max = 10 (int) +default_person.head.tracker_2.abcshift_tracker.model.color_threshold_min = 5 (int) +default_person.head.tracker_2.abcshift_tracker.model.y_max = 250 (int) +default_person.head.tracker_2.abcshift_tracker.model.y_min = 5 (int) +default_person.head.tracker_2.abcshift_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_2.abcshift_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_2.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_2.image_tracker.debug = false (bool) +default_person.head.tracker_2.image_tracker.image_debug = false (bool) +default_person.head.tracker_2.image_tracker.image_height = 360 (int) +default_person.head.tracker_2.image_tracker.image_width = 640 (int) +default_person.head.tracker_2.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_2.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_2.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_2.image_tracker.name = "A" (string) +default_person.head.tracker_2.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_2.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_2.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_2.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_2.tracker_class = "abcshift_tracker" (string) +default_person.head.tracker_3.correlation_tracker.filter_size = 6 (int) +default_person.head.tracker_3.correlation_tracker.nu_scale = 0.025 (float) +default_person.head.tracker_3.correlation_tracker.nu_space = 0.025 (float) +default_person.head.tracker_3.correlation_tracker.num_scale_levels = 5 (int) +default_person.head.tracker_3.correlation_tracker.regularizer_scale = 0.001 (float) +default_person.head.tracker_3.correlation_tracker.regularizer_space = 0.001 (float) +default_person.head.tracker_3.correlation_tracker.scale_pyramid_alpha = 1.02 (float) +default_person.head.tracker_3.correlation_tracker.scale_window_size = 23 (int) +default_person.head.tracker_3.correlation_tracker.side_lobe_ratio_threshold = 12.0 (float) +default_person.head.tracker_3.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_3.image_tracker.debug = false (bool) +default_person.head.tracker_3.image_tracker.image_debug = false (bool) +default_person.head.tracker_3.image_tracker.image_height = 360 (int) +default_person.head.tracker_3.image_tracker.image_width = 640 (int) +default_person.head.tracker_3.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_3.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_3.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_3.image_tracker.name = "A" (string) +default_person.head.tracker_3.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_3.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_3.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_3.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_3.tracker_class = "correlation_tracker" (string) +default_person.head.tracker_4.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_4.image_tracker.debug = false (bool) +default_person.head.tracker_4.image_tracker.image_debug = false (bool) +default_person.head.tracker_4.image_tracker.image_height = 360 (int) +default_person.head.tracker_4.image_tracker.image_width = 640 (int) +default_person.head.tracker_4.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_4.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_4.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_4.image_tracker.name = "A" (string) +default_person.head.tracker_4.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_4.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_4.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_4.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_4.tracker_class = "face_landmark_tracker" (string) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_aspect = 1.2 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_filter = 0.6 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.area_scale = 1.3 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.binsX = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.binsY = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.maxX = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.maxY = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.minX = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.background.minY = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.bhattacharyya_threshold = 0.5 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.drop_area_too_big = 120000.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.drop_area_too_small = 600.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.binsX = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.binsY = 64 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.maxX = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.maxY = 255 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.minX = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.foreground.minY = 0 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.max_iterations = 6 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.color_threshold_max = 25 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.color_threshold_min = 5 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.y_max = 250 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.model.y_min = 5 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.search_size_horizontal_scale = 20 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.abcshift_tracker.search_size_vertical_scale = 20 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.debug = false (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_debug = false (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_height = 360 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.image_width = 640 (int) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.name = "A" (string) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_5.composite_tracker.trackers.color.tracker_class = "abcshift_tracker" (string) +default_person.head.tracker_5.image_tracker.base_covar = 220.0 (float) +default_person.head.tracker_5.image_tracker.debug = false (bool) +default_person.head.tracker_5.image_tracker.image_debug = false (bool) +default_person.head.tracker_5.image_tracker.image_height = 720 (int) +default_person.head.tracker_5.image_tracker.image_width = 1280 (int) +default_person.head.tracker_5.image_tracker.measure_interval = 0.067 (float) +default_person.head.tracker_5.image_tracker.min_confidence = 0.05 (float) +default_person.head.tracker_5.image_tracker.model_confidence_filter = 0.9 (float) +default_person.head.tracker_5.image_tracker.name = "A" (string) +default_person.head.tracker_5.image_tracker.track_confidence_filter = 0.6 (float) +default_person.head.tracker_5.image_tracker.use_image_velocity = true (bool) +default_person.head.tracker_5.image_tracker.vel_filter = 0.75 (float) +default_person.head.tracker_5.image_tracker.vel_scale = 0.9 (float) +default_person.head.tracker_5.tracker_class = "composite_tracker" (string) +default_person.head.tracker_type = "tracker_2" (string) +default_person.head.use_pseudo_range = true (bool) +default_person.head.vel_decay = 0.5 (float) +default_person.head.vel_max = 1.9 (float) +default_person.in_fov_margin = 0.1 (float) +default_person.is_static = false (bool) +default_person.max_audio_measure_age = 10.0 (float) +default_person.max_part_measure_age = 5.0 (float) +default_person.max_track_age = 300.0 (float) +default_person.min_audio_confidence = 0.4 (float) +default_person.min_detect_request_age = 5.0 (float) +default_person.min_part_confidence = 0.001 (float) +default_person.name = "person" (string) +default_person.out_fov_age_factor = 1.5 (float) +default_person.speaking_threshold = 0.25 (float) +default_person.speaking_timeout = 1.5 (float) +``` + +### /usr/local/etc/lps/schemas/focused.json + +Source in this workspace: `usr/local/etc/lps/schemas/focused.json` + +```text +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "FaceDetectAction" (string) +schemas[0].actions[0].policy_detector.criteria.cameraIds[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].height = 360 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].width = 640 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].height = 45 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].width = 80 (int) +schemas[0].actions[0].policy_detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].policy_detector.criteria.formats[1] = 1 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[1] = 2 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_height = 40 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_width = 40 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].kind = "skincolor" (string) +schemas[0].actions[0].policy_detector.policies[0].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].weight = 0.75 (float) +schemas[0].actions[0].policy_detector.policies[1].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].kind = "gaussian" (string) +schemas[0].actions[0].policy_detector.policies[1].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].weight = 0.25 (float) +schemas[0].actions[0].type = "face_detection_action" (string) +schemas[0].actions[1].enable = true (bool) +schemas[0].actions[1].max_tracked = 1 (int) +schemas[0].actions[1].name = "FaceTrackerInitAction" (string) +schemas[0].actions[1].type = "face_tracker_init_action" (string) +schemas[0].actions[2].enable = true (bool) +schemas[0].actions[2].name = "FaceRecognitionAction" (string) +schemas[0].actions[2].turn_threshold = 0.5 (float) +schemas[0].actions[2].type = "face_recognition_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "FaceDetectSchema" (string) +schemas[0].predicate.criteria.cameraIds[0] = 0 (int) +schemas[0].predicate.enable = true (bool) +schemas[0].predicate.skip_with_tracks = 150 (int) +schemas[0].predicate.skip_without_tracks = 10 (int) +schemas[0].predicate.start = 0 (int) +schemas[0].predicate.type = "face_detection_predicate" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "FaceTrackerUpdate" (string) +schemas[1].actions[0].type = "face_tracker_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "FaceTrackSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].criteria.formats[0] = 3 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[2].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.min_hint_height = 80 (int) +schemas[2].actions[0].detector.min_hint_width = 80 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].hflip = true (bool) +schemas[2].actions[0].name = "FaceTrackerPoseEstimate" (string) +schemas[2].actions[0].type = "face_tracker_pose_estimate_action" (string) +schemas[2].actions[0].vflip = false (bool) +schemas[2].enable = false (bool) +schemas[2].name = "FaceTrackPoseEstimateSchema" (string) +schemas[2].predicate.enable = true (bool) +schemas[2].predicate.skip = 11 (int) +schemas[2].predicate.start = 4 (int) +schemas[2].predicate.type = "face_tracker_pose_estimate_predicate" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[3].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[3].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[3].actions[0].detector.min_hint_height = 80 (int) +schemas[3].actions[0].detector.min_hint_width = 80 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "FaceTrackerRedetectAction" (string) +schemas[3].actions[0].type = "face_tracker_redetect_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "FaceTrackReevaluateSchema" (string) +schemas[3].predicate.enable = true (bool) +schemas[3].predicate.skip = 89 (int) +schemas[3].predicate.start = 0 (int) +schemas[3].predicate.type = "face_reevaluate_predicate" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[4].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[4].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[4].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].name = "FaceTrainingAction" (string) +schemas[4].actions[0].type = "face_training_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "FaceTrainSchema" (string) +schemas[4].predicate.criteria.cameraIds[0] = 0 (int) +schemas[4].predicate.enable = true (bool) +schemas[4].predicate.type = "face_training_predicate" (string) +schemas[4].type = "image_update_schema" (string) +schemas[5].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[5].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[5].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[5].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "EntityDetailAction" (string) +schemas[5].actions[0].type = "entity_detail_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "EntityDetailSchema" (string) +schemas[5].type = "image_update_schema" (string) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[6].actions[0].type = "visual_awareness_update_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "VisualAwarenessSchema" (string) +schemas[6].type = "image_update_schema" (string) +schemas[7].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[7].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[7].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[7].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].name = "BarcodeRequestAction" (string) +schemas[7].actions[0].reader.types.CODE128 = false (bool) +schemas[7].actions[0].reader.types.CODE39 = false (bool) +schemas[7].actions[0].reader.types.EAN13 = false (bool) +schemas[7].actions[0].reader.types.EAN8 = false (bool) +schemas[7].actions[0].reader.types.I25 = false (bool) +schemas[7].actions[0].reader.types.ISBN10 = false (bool) +schemas[7].actions[0].reader.types.ISBN13 = false (bool) +schemas[7].actions[0].reader.types.PDF417 = false (bool) +schemas[7].actions[0].reader.types.QRCODE = true (bool) +schemas[7].actions[0].reader.types.UPCA = false (bool) +schemas[7].actions[0].reader.types.UPCE = false (bool) +schemas[7].actions[0].type = "barcode_request_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "BarcodeSchema" (string) +schemas[7].type = "image_update_schema" (string) +schemas[8].actions[0].defaultResetTimeout = 7000 (int) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "ControlChangeRequestAction" (string) +schemas[8].actions[0].type = "control_change_request_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "ControlChangeSchema" (string) +schemas[8].type = "image_update_schema" (string) +schemas[9].actions[0].accumulator_alpha = 0.75 (float) +schemas[9].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[9].actions[0].criteria.dimensions[0].height = 180 (int) +schemas[9].actions[0].criteria.dimensions[0].width = 320 (int) +schemas[9].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].image_height = 128 (int) +schemas[9].actions[0].image_width = 128 (int) +schemas[9].actions[0].motion_timeout = 100 (int) +schemas[9].actions[0].moving_delay = 400 (int) +schemas[9].actions[0].name = "MotionImagerAction" (string) +schemas[9].actions[0].type = "motion_imager_action" (string) +schemas[9].actions[1].detector.criteria.cameraIds[0] = 0 (int) +schemas[9].actions[1].detector.min_height = 10 (int) +schemas[9].actions[1].detector.min_width = 10 (int) +schemas[9].actions[1].detector.threshold.ae.gain = 16.0 (float) +schemas[9].actions[1].detector.threshold.ae.time = 0.0333 (float) +schemas[9].actions[1].detector.threshold.awb.blue = 4.0 (float) +schemas[9].actions[1].detector.threshold.awb.green = 4.0 (float) +schemas[9].actions[1].detector.threshold.awb.red = 4.0 (float) +schemas[9].actions[1].detector.threshold.dynamic = true (bool) +schemas[9].actions[1].detector.threshold.high = 50 (int) +schemas[9].actions[1].detector.threshold.low = 5 (int) +schemas[9].actions[1].enable = true (bool) +schemas[9].actions[1].moving_delay = 400 (int) +schemas[9].actions[1].name = "MotionDetectionAction" (string) +schemas[9].actions[1].type = "motion_detection_action" (string) +schemas[9].actions[2].enable = true (bool) +schemas[9].actions[2].max_tracked = 2 (int) +schemas[9].actions[2].moving_delay = 400 (int) +schemas[9].actions[2].name = "MotionTrackerInitAction" (string) +schemas[9].actions[2].pool.format = 1 (int) +schemas[9].actions[2].pool.height = 128 (int) +schemas[9].actions[2].pool.size = 8 (int) +schemas[9].actions[2].pool.width = 128 (int) +schemas[9].actions[2].type = "motion_tracker_init_action" (string) +schemas[9].actions[3].enable = true (bool) +schemas[9].actions[3].moving_delay = 400 (int) +schemas[9].actions[3].name = "MotionTrackerUpdateAction" (string) +schemas[9].actions[3].pool.format = 1 (int) +schemas[9].actions[3].pool.height = 128 (int) +schemas[9].actions[3].pool.size = 8 (int) +schemas[9].actions[3].pool.width = 128 (int) +schemas[9].actions[3].type = "motion_tracker_update_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "MotionSchema" (string) +schemas[9].type = "image_update_schema" (string) +schemas[10].actions[0].ceiling_height = 2.0 (float) +schemas[10].actions[0].drop_radius = 0.3 (float) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].fence_radius = 4.0 (float) +schemas[10].actions[0].floor_height = -2.0 (float) +schemas[10].actions[0].name = "FaceTimeAction" (string) +schemas[10].actions[0].type = "face_time_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "FaceTimeSchema" (string) +schemas[10].type = "time_update_schema" (string) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].name = "PersonEvaluationAction" (string) +schemas[11].actions[0].not_trained_age_limit = 20.0 (float) +schemas[11].actions[0].refresh_limit = 50.0 (float) +schemas[11].actions[0].type = "person_evaluation_action" (string) +schemas[11].actions[0].unknown_age_limit = 1.5 (float) +schemas[11].actions[1].enable = true (bool) +schemas[11].actions[1].name = "PresenceTimeAction" (string) +schemas[11].actions[1].type = "presence_time_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "FaceEvaluateTimeSchema" (string) +schemas[11].predicate.enable = true (bool) +schemas[11].predicate.min_period = 1.1 (float) +schemas[11].predicate.type = "min_period_predicate" (string) +schemas[11].type = "time_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].expiration = 60000 (int) +schemas[12].actions[0].name = "SpeakerTimeAction" (string) +schemas[12].actions[0].type = "speaker_time_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "SpeakerTimeSchema" (string) +schemas[12].type = "time_update_schema" (string) +schemas[13].actions[0].enable = true (bool) +schemas[13].actions[0].name = "AwarenessTimeAction" (string) +schemas[13].actions[0].type = "awareness_time_action" (string) +schemas[13].enable = true (bool) +schemas[13].name = "AwarenessTimeSchema" (string) +schemas[13].type = "time_update_schema" (string) +schemas[14].actions[0].drop_radius = 0.3 (float) +schemas[14].actions[0].enable = true (bool) +schemas[14].actions[0].fence_radius = 4.0 (float) +schemas[14].actions[0].name = "MotionTimeAction" (string) +schemas[14].actions[0].type = "motion_time_action" (string) +schemas[14].enable = true (bool) +schemas[14].name = "MotionTimeSchema" (string) +schemas[14].type = "time_update_schema" (string) +schemas[15].actions[0].enable = true (bool) +schemas[15].actions[0].event_timeout = 5.0 (float) +schemas[15].actions[0].name = "AudioTimeAction" (string) +schemas[15].actions[0].type = "audio_time_action" (string) +schemas[15].enable = true (bool) +schemas[15].name = "AudioTimeSchema" (string) +schemas[15].type = "time_update_schema" (string) +schemas[16].actions[0].enable = true (bool) +schemas[16].actions[0].name = "PresenceTimeAction" (string) +schemas[16].actions[0].type = "presence_time_action" (string) +schemas[16].enable = true (bool) +schemas[16].name = "PresenceTimeSchema" (string) +schemas[16].type = "time_update_schema" (string) +schemas[17].actions[0].enable = true (bool) +schemas[17].actions[0].name = "AudioDetectionAction" (string) +schemas[17].actions[0].type = "audio_detection_action" (string) +schemas[17].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[17].actions[1].audio_time_tolerance = 0.35 (float) +schemas[17].actions[1].enable = true (bool) +schemas[17].actions[1].in_fov_margin = 0.1 (float) +schemas[17].actions[1].name = "AudioMeasurementAction" (string) +schemas[17].actions[1].type = "audio_measurement_action" (string) +schemas[17].enable = true (bool) +schemas[17].name = "AudioDetectSchema" (string) +schemas[17].type = "audio_update_schema" (string) +schemas[18].actions[0].enable = true (bool) +schemas[18].actions[0].name = "AudioAwarenessAction" (string) +schemas[18].actions[0].type = "audio_awareness_action" (string) +schemas[18].enable = true (bool) +schemas[18].name = "AudioAwarenessSchema" (string) +schemas[18].type = "audio_update_schema" (string) +schemas[19].actions[0].enable = true (bool) +schemas[19].actions[0].name = "GeometryUpdateAction" (string) +schemas[19].actions[0].type = "geometry_update_action" (string) +schemas[19].actions[1].enable = true (bool) +schemas[19].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[19].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[19].enable = true (bool) +schemas[19].name = "AxisUpdateSchema" (string) +schemas[19].type = "axis_update_schema" (string) +``` + +### /usr/local/etc/lps/schemas/minimal.json + +Source in this workspace: `usr/local/etc/lps/schemas/minimal.json` + +```text +schemas[0].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[0].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[0].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "EntityDetailAction" (string) +schemas[0].actions[0].type = "entity_detail_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "EntityDetailSchema" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[1].actions[0].type = "visual_awareness_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "VisualAwarenessSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].name = "BarcodeRequestAction" (string) +schemas[2].actions[0].reader.types.CODE128 = false (bool) +schemas[2].actions[0].reader.types.CODE39 = false (bool) +schemas[2].actions[0].reader.types.EAN13 = false (bool) +schemas[2].actions[0].reader.types.EAN8 = false (bool) +schemas[2].actions[0].reader.types.I25 = false (bool) +schemas[2].actions[0].reader.types.ISBN10 = false (bool) +schemas[2].actions[0].reader.types.ISBN13 = false (bool) +schemas[2].actions[0].reader.types.PDF417 = false (bool) +schemas[2].actions[0].reader.types.QRCODE = true (bool) +schemas[2].actions[0].reader.types.UPCA = false (bool) +schemas[2].actions[0].reader.types.UPCE = false (bool) +schemas[2].actions[0].type = "barcode_request_action" (string) +schemas[2].enable = true (bool) +schemas[2].name = "BarcodeSchema" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].defaultResetTimeout = 7000 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "ControlChangeRequestAction" (string) +schemas[3].actions[0].type = "control_change_request_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "ControlChangeSchema" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].ceiling_height = 2.0 (float) +schemas[4].actions[0].drop_radius = 0.3 (float) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].fence_radius = 4.0 (float) +schemas[4].actions[0].floor_height = -2.0 (float) +schemas[4].actions[0].name = "FaceTimeAction" (string) +schemas[4].actions[0].type = "face_time_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "FaceTimeSchema" (string) +schemas[4].type = "time_update_schema" (string) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "AwarenessTimeAction" (string) +schemas[5].actions[0].type = "awareness_time_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "AwarenessTimeSchema" (string) +schemas[5].type = "time_update_schema" (string) +schemas[6].actions[0].drop_radius = 0.3 (float) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].fence_radius = 4.0 (float) +schemas[6].actions[0].name = "MotionTimeAction" (string) +schemas[6].actions[0].type = "motion_time_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "MotionTimeSchema" (string) +schemas[6].type = "time_update_schema" (string) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].event_timeout = 5.0 (float) +schemas[7].actions[0].name = "AudioTimeAction" (string) +schemas[7].actions[0].type = "audio_time_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "AudioTimeSchema" (string) +schemas[7].type = "time_update_schema" (string) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "PresenceTimeAction" (string) +schemas[8].actions[0].type = "presence_time_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "PresenceTimeSchema" (string) +schemas[8].type = "time_update_schema" (string) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].name = "AudioDetectionAction" (string) +schemas[9].actions[0].type = "audio_detection_action" (string) +schemas[9].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[9].actions[1].audio_time_tolerance = 0.35 (float) +schemas[9].actions[1].enable = true (bool) +schemas[9].actions[1].in_fov_margin = 0.1 (float) +schemas[9].actions[1].name = "AudioMeasurementAction" (string) +schemas[9].actions[1].type = "audio_measurement_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "AudioDetectSchema" (string) +schemas[9].type = "audio_update_schema" (string) +schemas[10].actions[0].audio_angle_tolerance = 0.5 (float) +schemas[10].actions[0].audio_time_tolerance = 0.35 (float) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].in_fov_margin = 0.1 (float) +schemas[10].actions[0].name = "SpeakerPresenceAudioAction" (string) +schemas[10].actions[0].presence_timeout = 10.0 (float) +schemas[10].actions[0].type = "speaker_presence_audio_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "AudioPresenceSchema" (string) +schemas[10].type = "audio_update_schema" (string) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].name = "AudioAwarenessAction" (string) +schemas[11].actions[0].type = "audio_awareness_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "AudioAwarenessSchema" (string) +schemas[11].type = "audio_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].name = "GeometryUpdateAction" (string) +schemas[12].actions[0].type = "geometry_update_action" (string) +schemas[12].actions[1].enable = true (bool) +schemas[12].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[12].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "AxisUpdateSchema" (string) +schemas[12].type = "axis_update_schema" (string) +``` + +### /usr/local/etc/lps/schemas/normal.json + +Source in this workspace: `usr/local/etc/lps/schemas/normal.json` + +```text +schemas[0].actions[0].enable = true (bool) +schemas[0].actions[0].name = "FaceDetectAction" (string) +schemas[0].actions[0].policy_detector.criteria.cameraIds[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].height = 720 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[0].width = 1280 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].height = 45 (int) +schemas[0].actions[0].policy_detector.criteria.dimensions[1].width = 80 (int) +schemas[0].actions[0].policy_detector.criteria.formats[0] = 3 (int) +schemas[0].actions[0].policy_detector.criteria.formats[1] = 1 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[0] = 0 (int) +schemas[0].actions[0].policy_detector.criteria.outputTypes[1] = 2 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_height = 40 (int) +schemas[0].actions[0].policy_detector.detector.min_hint_width = 40 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[0].kind = "skincolor" (string) +schemas[0].actions[0].policy_detector.policies[0].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[0].weight = 0.75 (float) +schemas[0].actions[0].policy_detector.policies[1].extra_horizontal = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].extra_vertical = 20 (int) +schemas[0].actions[0].policy_detector.policies[1].kind = "gaussian" (string) +schemas[0].actions[0].policy_detector.policies[1].sub_image_height = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].sub_image_width = 200 (int) +schemas[0].actions[0].policy_detector.policies[1].weight = 0.25 (float) +schemas[0].actions[0].type = "face_detection_action" (string) +schemas[0].actions[1].enable = true (bool) +schemas[0].actions[1].max_tracked = 3 (int) +schemas[0].actions[1].name = "FaceTrackerInitAction" (string) +schemas[0].actions[1].type = "face_tracker_init_action" (string) +schemas[0].actions[2].criteria.cameraIds[0] = 0 (int) +schemas[0].actions[2].criteria.dimensions[0].height = 720 (int) +schemas[0].actions[2].criteria.dimensions[0].width = 1280 (int) +schemas[0].actions[2].criteria.formats[0] = 3 (int) +schemas[0].actions[2].criteria.outputTypes[0] = 0 (int) +schemas[0].actions[2].enable = true (bool) +schemas[0].actions[2].name = "FaceTrackerIDAction" (string) +schemas[0].actions[2].type = "face_tracker_id_action" (string) +schemas[0].enable = true (bool) +schemas[0].name = "FaceDetectSchema" (string) +schemas[0].predicate.criteria.cameraIds[0] = 0 (int) +schemas[0].predicate.enable = true (bool) +schemas[0].predicate.skip_with_tracks = 30 (int) +schemas[0].predicate.skip_without_tracks = 10 (int) +schemas[0].predicate.start = 0 (int) +schemas[0].predicate.type = "face_detection_predicate" (string) +schemas[0].type = "image_update_schema" (string) +schemas[1].actions[0].enable = true (bool) +schemas[1].actions[0].name = "FaceTrackerUpdate" (string) +schemas[1].actions[0].type = "face_tracker_update_action" (string) +schemas[1].enable = true (bool) +schemas[1].name = "FaceTrackSchema" (string) +schemas[1].type = "image_update_schema" (string) +schemas[2].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].criteria.formats[0] = 3 (int) +schemas[2].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[2].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[2].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[2].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[2].actions[0].detector.min_hint_height = 80 (int) +schemas[2].actions[0].detector.min_hint_width = 80 (int) +schemas[2].actions[0].enable = true (bool) +schemas[2].actions[0].hflip = true (bool) +schemas[2].actions[0].name = "FaceTrackerPoseEstimate" (string) +schemas[2].actions[0].type = "face_tracker_pose_estimate_action" (string) +schemas[2].actions[0].vflip = false (bool) +schemas[2].enable = false (bool) +schemas[2].name = "FaceTrackPoseEstimateSchema" (string) +schemas[2].predicate.enable = true (bool) +schemas[2].predicate.skip = 11 (int) +schemas[2].predicate.start = 4 (int) +schemas[2].predicate.type = "face_tracker_pose_estimate_predicate" (string) +schemas[2].type = "image_update_schema" (string) +schemas[3].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].height = 720 (int) +schemas[3].actions[0].detector.criteria.dimensions[0].width = 1280 (int) +schemas[3].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[3].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[3].actions[0].detector.min_hint_height = 80 (int) +schemas[3].actions[0].detector.min_hint_width = 80 (int) +schemas[3].actions[0].enable = true (bool) +schemas[3].actions[0].name = "PersonRedetectAction" (string) +schemas[3].actions[0].type = "person_redetect_action" (string) +schemas[3].enable = true (bool) +schemas[3].name = "FaceTrackRedetectSchema" (string) +schemas[3].predicate.enable = true (bool) +schemas[3].predicate.skip = 3 (int) +schemas[3].predicate.start = 0 (int) +schemas[3].predicate.type = "face_reevaluate_predicate" (string) +schemas[3].type = "image_update_schema" (string) +schemas[4].actions[0].detector.criteria.cameraIds[0] = 0 (int) +schemas[4].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[4].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[4].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[4].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[4].actions[0].detector.min_hint_height = 80 (int) +schemas[4].actions[0].detector.min_hint_width = 80 (int) +schemas[4].actions[0].enable = true (bool) +schemas[4].actions[0].max_tracked = 3 (int) +schemas[4].actions[0].name = "DeferredDetectionAction" (string) +schemas[4].actions[0].type = "deferred_detection_action" (string) +schemas[4].enable = true (bool) +schemas[4].name = "DeferredDetectSchema" (string) +schemas[4].type = "image_update_schema" (string) +schemas[5].actions[0].enable = true (bool) +schemas[5].actions[0].name = "FaceTrainingAction" (string) +schemas[5].actions[0].type = "face_training_action" (string) +schemas[5].enable = true (bool) +schemas[5].name = "FaceTrainSchema" (string) +schemas[5].predicate.enable = true (bool) +schemas[5].predicate.type = "face_training_predicate" (string) +schemas[5].type = "image_update_schema" (string) +schemas[6].actions[0].detector.criteria.dimensions[0].height = 360 (int) +schemas[6].actions[0].detector.criteria.dimensions[0].width = 640 (int) +schemas[6].actions[0].detector.criteria.formats[0] = 3 (int) +schemas[6].actions[0].detector.criteria.outputTypes[0] = 0 (int) +schemas[6].actions[0].enable = true (bool) +schemas[6].actions[0].name = "EntityDetailAction" (string) +schemas[6].actions[0].type = "entity_detail_action" (string) +schemas[6].enable = true (bool) +schemas[6].name = "EntityDetailSchema" (string) +schemas[6].type = "image_update_schema" (string) +schemas[7].actions[0].enable = true (bool) +schemas[7].actions[0].name = "VisualAwarenessUpdateAction" (string) +schemas[7].actions[0].type = "visual_awareness_update_action" (string) +schemas[7].enable = true (bool) +schemas[7].name = "VisualAwarenessSchema" (string) +schemas[7].type = "image_update_schema" (string) +schemas[8].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[8].actions[0].criteria.dimensions[0].height = 720 (int) +schemas[8].actions[0].criteria.dimensions[0].width = 1280 (int) +schemas[8].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[8].actions[0].enable = true (bool) +schemas[8].actions[0].name = "BarcodeRequestAction" (string) +schemas[8].actions[0].reader.types.CODE128 = false (bool) +schemas[8].actions[0].reader.types.CODE39 = false (bool) +schemas[8].actions[0].reader.types.EAN13 = false (bool) +schemas[8].actions[0].reader.types.EAN8 = false (bool) +schemas[8].actions[0].reader.types.I25 = false (bool) +schemas[8].actions[0].reader.types.ISBN10 = false (bool) +schemas[8].actions[0].reader.types.ISBN13 = false (bool) +schemas[8].actions[0].reader.types.PDF417 = false (bool) +schemas[8].actions[0].reader.types.QRCODE = true (bool) +schemas[8].actions[0].reader.types.UPCA = false (bool) +schemas[8].actions[0].reader.types.UPCE = false (bool) +schemas[8].actions[0].type = "barcode_request_action" (string) +schemas[8].enable = true (bool) +schemas[8].name = "BarcodeSchema" (string) +schemas[8].type = "image_update_schema" (string) +schemas[9].actions[0].defaultResetTimeout = 7000 (int) +schemas[9].actions[0].enable = true (bool) +schemas[9].actions[0].name = "ControlChangeRequestAction" (string) +schemas[9].actions[0].type = "control_change_request_action" (string) +schemas[9].enable = true (bool) +schemas[9].name = "ControlChangeSchema" (string) +schemas[9].type = "image_update_schema" (string) +schemas[10].actions[0].accumulator_alpha = 0.75 (float) +schemas[10].actions[0].criteria.cameraIds[0] = 0 (int) +schemas[10].actions[0].criteria.dimensions[0].height = 180 (int) +schemas[10].actions[0].criteria.dimensions[0].width = 320 (int) +schemas[10].actions[0].criteria.outputTypes[0] = 0 (int) +schemas[10].actions[0].enable = true (bool) +schemas[10].actions[0].image_height = 128 (int) +schemas[10].actions[0].image_width = 128 (int) +schemas[10].actions[0].motion_timeout = 100 (int) +schemas[10].actions[0].moving_delay = 400 (int) +schemas[10].actions[0].name = "MotionImagerAction" (string) +schemas[10].actions[0].type = "motion_imager_action" (string) +schemas[10].actions[1].detector.criteria.cameraIds[0] = 0 (int) +schemas[10].actions[1].detector.min_height = 10 (int) +schemas[10].actions[1].detector.min_width = 10 (int) +schemas[10].actions[1].detector.threshold.ae.gain = 16.0 (float) +schemas[10].actions[1].detector.threshold.ae.time = 0.0333 (float) +schemas[10].actions[1].detector.threshold.awb.blue = 4.0 (float) +schemas[10].actions[1].detector.threshold.awb.green = 4.0 (float) +schemas[10].actions[1].detector.threshold.awb.red = 4.0 (float) +schemas[10].actions[1].detector.threshold.dynamic = true (bool) +schemas[10].actions[1].detector.threshold.high = 50 (int) +schemas[10].actions[1].detector.threshold.low = 5 (int) +schemas[10].actions[1].enable = true (bool) +schemas[10].actions[1].moving_delay = 400 (int) +schemas[10].actions[1].name = "MotionDetectionAction" (string) +schemas[10].actions[1].type = "motion_detection_action" (string) +schemas[10].actions[2].enable = true (bool) +schemas[10].actions[2].max_tracked = 3 (int) +schemas[10].actions[2].moving_delay = 400 (int) +schemas[10].actions[2].name = "MotionTrackerInitAction" (string) +schemas[10].actions[2].pool.format = 1 (int) +schemas[10].actions[2].pool.height = 128 (int) +schemas[10].actions[2].pool.size = 8 (int) +schemas[10].actions[2].pool.width = 128 (int) +schemas[10].actions[2].type = "motion_tracker_init_action" (string) +schemas[10].actions[3].enable = true (bool) +schemas[10].actions[3].moving_delay = 400 (int) +schemas[10].actions[3].name = "MotionTrackerUpdateAction" (string) +schemas[10].actions[3].pool.format = 1 (int) +schemas[10].actions[3].pool.height = 128 (int) +schemas[10].actions[3].pool.size = 8 (int) +schemas[10].actions[3].pool.width = 128 (int) +schemas[10].actions[3].type = "motion_tracker_update_action" (string) +schemas[10].enable = true (bool) +schemas[10].name = "MotionSchema" (string) +schemas[10].type = "image_update_schema" (string) +schemas[11].actions[0].ceiling_height = 2.0 (float) +schemas[11].actions[0].drop_radius = 0.3 (float) +schemas[11].actions[0].enable = true (bool) +schemas[11].actions[0].fence_radius = 4.0 (float) +schemas[11].actions[0].floor_height = -2.0 (float) +schemas[11].actions[0].name = "FaceTimeAction" (string) +schemas[11].actions[0].type = "face_time_action" (string) +schemas[11].enable = true (bool) +schemas[11].name = "FaceTimeSchema" (string) +schemas[11].type = "time_update_schema" (string) +schemas[12].actions[0].enable = true (bool) +schemas[12].actions[0].name = "PersonEvaluationAction" (string) +schemas[12].actions[0].not_trained_age_limit = 20.0 (float) +schemas[12].actions[0].refresh_limit = 50.0 (float) +schemas[12].actions[0].type = "person_evaluation_action" (string) +schemas[12].actions[0].unknown_age_limit = 10.0 (float) +schemas[12].actions[1].enable = true (bool) +schemas[12].actions[1].name = "PresenceTimeAction" (string) +schemas[12].actions[1].type = "presence_time_action" (string) +schemas[12].enable = true (bool) +schemas[12].name = "FaceEvaluateTimeSchema" (string) +schemas[12].predicate.enable = true (bool) +schemas[12].predicate.min_period = 1.1 (float) +schemas[12].predicate.type = "min_period_predicate" (string) +schemas[12].type = "time_update_schema" (string) +schemas[13].actions[0].enable = true (bool) +schemas[13].actions[0].expiration = 60000 (int) +schemas[13].actions[0].name = "SpeakerTimeAction" (string) +schemas[13].actions[0].type = "speaker_time_action" (string) +schemas[13].enable = true (bool) +schemas[13].name = "SpeakerTimeSchema" (string) +schemas[13].type = "time_update_schema" (string) +schemas[14].actions[0].enable = true (bool) +schemas[14].actions[0].name = "AwarenessTimeAction" (string) +schemas[14].actions[0].type = "awareness_time_action" (string) +schemas[14].enable = true (bool) +schemas[14].name = "AwarenessTimeSchema" (string) +schemas[14].type = "time_update_schema" (string) +schemas[15].actions[0].drop_radius = 0.3 (float) +schemas[15].actions[0].enable = true (bool) +schemas[15].actions[0].fence_radius = 4.0 (float) +schemas[15].actions[0].name = "MotionTimeAction" (string) +schemas[15].actions[0].type = "motion_time_action" (string) +schemas[15].enable = true (bool) +schemas[15].name = "MotionTimeSchema" (string) +schemas[15].type = "time_update_schema" (string) +schemas[16].actions[0].enable = true (bool) +schemas[16].actions[0].event_timeout = 5.0 (float) +schemas[16].actions[0].name = "AudioTimeAction" (string) +schemas[16].actions[0].type = "audio_time_action" (string) +schemas[16].enable = true (bool) +schemas[16].name = "AudioTimeSchema" (string) +schemas[16].type = "time_update_schema" (string) +schemas[17].actions[0].enable = true (bool) +schemas[17].actions[0].name = "PresenceTimeAction" (string) +schemas[17].actions[0].type = "presence_time_action" (string) +schemas[17].enable = true (bool) +schemas[17].name = "PresenceTimeSchema" (string) +schemas[17].type = "time_update_schema" (string) +schemas[18].actions[0].enable = true (bool) +schemas[18].actions[0].name = "AudioDetectionAction" (string) +schemas[18].actions[0].type = "audio_detection_action" (string) +schemas[18].actions[1].audio_angle_tolerance = 0.5 (float) +schemas[18].actions[1].audio_time_tolerance = 0.35 (float) +schemas[18].actions[1].enable = true (bool) +schemas[18].actions[1].in_fov_margin = 0.1 (float) +schemas[18].actions[1].name = "AudioMeasurementAction" (string) +schemas[18].actions[1].type = "audio_measurement_action" (string) +schemas[18].enable = true (bool) +schemas[18].name = "AudioDetectSchema" (string) +schemas[18].type = "audio_update_schema" (string) +schemas[19].actions[0].enable = true (bool) +schemas[19].actions[0].name = "AudioAwarenessAction" (string) +schemas[19].actions[0].type = "audio_awareness_action" (string) +schemas[19].enable = true (bool) +schemas[19].name = "AudioAwarenessSchema" (string) +schemas[19].type = "audio_update_schema" (string) +schemas[20].actions[0].enable = true (bool) +schemas[20].actions[0].name = "GeometryUpdateAction" (string) +schemas[20].actions[0].type = "geometry_update_action" (string) +schemas[20].actions[1].enable = true (bool) +schemas[20].actions[1].name = "MotionTrackerAxisUpdateAction" (string) +schemas[20].actions[1].type = "motion_tracker_axis_update_action" (string) +schemas[20].enable = true (bool) +schemas[20].name = "AxisUpdateSchema" (string) +schemas[20].type = "axis_update_schema" (string) +``` + +--- + +## Init/system configs (non-JSON) + +These locations are config surfaces via constants and/or environment variables. + +### /etc/init.d/S04jibo-asr-service + +Source in this workspace: `etc/init.d/S04jibo-asr-service` + +Environment/config variables referenced: + +```text +DAEMON +LOGFILE +PIDFILE +``` + +### /etc/init.d/S02jibo-skills-logd + +Source in this workspace: `etc/init.d/S02jibo-skills-logd` + +Environment/config variables referenced: + +```text +DAEMON +JIBO_LOGD_FILE +JIBO_LOGD_HOST +JIBO_LOGD_PORT +LOGFILE +PIDFILE +PYTHON_BIN +``` + +### /etc/init.d/S03jibo-skills-logpanel + +Source in this workspace: `etc/init.d/S03jibo-skills-logpanel` + +Environment/config variables referenced: + +```text +DAEMON +JIBO_LOGD_FILE +JIBO_LOGPANEL_BIND +JIBO_LOGPANEL_PORT +LOGFILE +PIDFILE +PYTHON_BIN +``` + +### /etc/init.d/S21firewall + +Source in this workspace: `etc/init.d/S21firewall` + +Environment/config variables referenced: + +```text +DYNAMIC_ACCESS +IPTABLES_CMDS +``` + +Ports explicitly referenced in rules: + +```text +15150 22 5353 8686 8779 8989 9191 9292 9797 +``` + +### /hub-shim/systemd/jibo-hub-shim.service + +Source in this workspace: `hub-shim/systemd/jibo-hub-shim.service` + +Environment/config variables referenced: + +```text +JIBO_HUB_SHIM_CONFIG +``` + +### /hub-shim/systemd/jibo-hub-shim.env.example + +Source in this workspace: `hub-shim/systemd/jibo-hub-shim.env.example` + +Environment/config variables referenced: + +```text +JIBO_HUB_SHIM_CONFIG +``` + +### /ai_bridge_server/README.md + +Source in this workspace: `ai_bridge_server/README.md` + +Environment/config variables referenced: + +```text +OLLAMA_MODEL +OLLAMA_URL +WHISPER_MODEL +``` + diff --git a/JiboTools/JiboTools/form.ui b/JiboTools/JiboTools/form.ui index f6b9cb5..ca2329c 100644 --- a/JiboTools/JiboTools/form.ui +++ b/JiboTools/JiboTools/form.ui @@ -156,6 +156,32 @@ + + + + Tool Settings + + + + + + Enable logging + + + + + + + + + + false + + + + + + @@ -193,12 +219,12 @@ - - - - AI Provider - - + + + + AI Bridge + + @@ -216,7 +242,7 @@ - Provider + Mode @@ -226,7 +252,7 @@ - API endpoint + Server base URL @@ -240,28 +266,245 @@ - API key + ASR host - - QLineEdit::EchoMode::Password + + 127.0.0.1 + + + + + + + Record seconds + + + + + + + 1 + + + 60 + + + 5 + + + + + + + Use ASR service STT + + + + + + + + + + true + + + + + + + ASR port + + + + + + + 1 + + + 65535 + + + 8088 + + + + + + + ASR audio source + + + + + + + alsa1 + + + + + + + ASR timeout (ms) + + + + + + + 100 + + + 120000 + + + 100 + + + 15000 + + + + + + + ASR auto start + + + + + + + + + + true + + + + + + + Followup enabled + + + + + + + + + + true + + + + + + + Followup delay (ms) + + + + + + + 0 + + + 60000 + + + 50 + + + 250 + + + + + + + Advanced + + + + + + + Edit AI Bridge Config + + + + + + + + + + Config Files + + + + 8 + + + + + 8 + + + + + + + + Read + + + + + + + false + + + Write + + + + + + + + + Select a config to view/edit + + + true - - + + + + + - Tokens used + Activity log - - - - -1 + + + + true diff --git a/JiboTools/JiboTools/gui/Assets/Jibo/A b/JiboTools/JiboTools/gui/Assets/Jibo/A new file mode 100644 index 0000000..a97a45b Binary files /dev/null and b/JiboTools/JiboTools/gui/Assets/Jibo/A differ diff --git a/JiboTools/JiboTools/gui/Assets/Jibo/Archive.zip b/JiboTools/JiboTools/gui/Assets/Jibo/Archive.zip deleted file mode 100644 index ef52089..0000000 Binary files a/JiboTools/JiboTools/gui/Assets/Jibo/Archive.zip and /dev/null differ diff --git a/JiboTools/JiboTools/gui/Assets/Jibo/JiboFaceForward.png b/JiboTools/JiboTools/gui/Assets/Jibo/JiboFaceForward.png index a97a45b..a70d99d 100644 Binary files a/JiboTools/JiboTools/gui/Assets/Jibo/JiboFaceForward.png and b/JiboTools/JiboTools/gui/Assets/Jibo/JiboFaceForward.png differ diff --git a/JiboTools/JiboTools/gui/Assets/Jibo/MissingJibo.PNG b/JiboTools/JiboTools/gui/Assets/Jibo/MissingJibo.PNG new file mode 100644 index 0000000..528e807 Binary files /dev/null and b/JiboTools/JiboTools/gui/Assets/Jibo/MissingJibo.PNG differ diff --git a/JiboTools/JiboTools/gui/assets/jibo.kra b/JiboTools/JiboTools/gui/assets/jibo.kra deleted file mode 100644 index 2130a7f..0000000 Binary files a/JiboTools/JiboTools/gui/assets/jibo.kra and /dev/null differ diff --git a/JiboTools/JiboTools/gui/assets/jibo.svg b/JiboTools/JiboTools/gui/assets/jibo.svg deleted file mode 100644 index 38bedf3..0000000 --- a/JiboTools/JiboTools/gui/assets/jibo.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - Jibo - diff --git a/JiboTools/JiboTools/gui/config_inventory.py b/JiboTools/JiboTools/gui/config_inventory.py new file mode 100644 index 0000000..38c9520 --- /dev/null +++ b/JiboTools/JiboTools/gui/config_inventory.py @@ -0,0 +1,131 @@ +from __future__ import annotations + +import json +import re +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Optional + + +_SENSITIVE_SUBSTRINGS = ("appkey", "key", "credential", "password", "token") + + +@dataclass(frozen=True) +class ConfigEntry: + remote_path: str + + @property + def is_usr_local_etc(self) -> bool: + return self.remote_path.startswith("/usr/local/etc/") + + +class _Missing: + pass + + +MISSING = _Missing() + + +_HEADING_RE = re.compile(r"^###\s+(/\S+)") + + +def _find_inventory_file(filename: str) -> Optional[Path]: + """Find inventory markdown files shipped with the repo. + + The GUI package layout is: + JiboTools/JiboTools/gui/*.py + so we search: + - JiboTools/ (packaged copy) + - repo root (workspace copy) + """ + + here = Path(__file__).resolve() + pkg_root = here.parents[2] # .../JiboTools + repo_root = pkg_root.parent # .../JiboAutoModv2 + + for p in (pkg_root / filename, repo_root / filename): + if p.exists(): + return p + return None + + +def load_config_entries_from_values_md() -> list[ConfigEntry]: + values_md = _find_inventory_file("CONFIG_VALUES.md") + if values_md is None: + return [] + + entries: list[ConfigEntry] = [] + seen: set[str] = set() + + for line in values_md.read_text("utf-8", errors="replace").splitlines(): + m = _HEADING_RE.match(line.strip()) + if not m: + continue + path = m.group(1).strip() + if not path.startswith("/"): + continue + if path in seen: + continue + + # Filter out non-robot/server dev configs the user doesn't want here. + if path.startswith("/hub-shim/"): + continue + if path.lower().endswith(".md"): + continue + + # Keep it focused on JSON files (these are strict JSON configs). + if not path.lower().endswith(".json"): + continue + + seen.add(path) + entries.append(ConfigEntry(remote_path=path)) + + return entries + + +def is_sensitive_path(path: str) -> bool: + p = path.lower() + return any(s in p for s in _SENSITIVE_SUBSTRINGS) + + +def short_json(value: Any, *, limit: int = 180) -> str: + try: + s = json.dumps(value, ensure_ascii=False) + except Exception: + s = repr(value) + if len(s) > limit: + return s[: limit - 3] + "..." + return s + + +def diff_json(old: Any, new: Any, prefix: str = "") -> list[tuple[str, Any, Any]]: + diffs: list[tuple[str, Any, Any]] = [] + + if isinstance(old, dict) and isinstance(new, dict): + keys = set(old.keys()) | set(new.keys()) + for key in sorted(keys, key=lambda x: str(x)): + old_value = old.get(key, MISSING) + new_value = new.get(key, MISSING) + child_prefix = f"{prefix}.{key}" if prefix else str(key) + if old_value is MISSING or new_value is MISSING: + diffs.append((child_prefix, old_value, new_value)) + else: + diffs.extend(diff_json(old_value, new_value, child_prefix)) + return diffs + + if isinstance(old, list) and isinstance(new, list): + max_len = max(len(old), len(new)) + for i in range(max_len): + old_value = old[i] if i < len(old) else MISSING + new_value = new[i] if i < len(new) else MISSING + child_prefix = f"{prefix}[{i}]" + if old_value is MISSING or new_value is MISSING: + diffs.append((child_prefix, old_value, new_value)) + else: + diffs.extend(diff_json(old_value, new_value, child_prefix)) + return diffs + + if old != new: + diffs.append((prefix or "", old, new)) + + return diffs diff --git a/JiboTools/JiboTools/gui/main_panel.py b/JiboTools/JiboTools/gui/main_panel.py index 49427a1..1ca9a96 100644 --- a/JiboTools/JiboTools/gui/main_panel.py +++ b/JiboTools/JiboTools/gui/main_panel.py @@ -4,7 +4,7 @@ import json import subprocess import sys from pathlib import Path -from typing import Optional +from typing import Any, Optional from PySide6.QtCore import Qt from PySide6.QtGui import QPixmap @@ -16,12 +16,15 @@ from PySide6.QtWidgets import ( QHBoxLayout, QLabel, QLineEdit, + QPlainTextEdit, QPushButton, + QSpinBox, QTabWidget, ) from .process_runner import resolve_python, resolve_python_invocation from .ui_loader import load_ui, require_child +from .config_inventory import MISSING, diff_json, is_sensitive_path, load_config_entries_from_values_md, short_json def _set_dot(label: QLabel, color: str) -> None: @@ -34,6 +37,8 @@ def _set_dot(label: QLabel, color: str) -> None: class MainWindowController: + _AI_BRIDGE_PATH = "/opt/jibo/Jibo/Skills/@be/be/be/ai-bridge-config.json" + def __init__(self) -> None: project_root = Path(__file__).resolve().parents[1] ui_path = project_root / "form.ui" @@ -60,17 +65,44 @@ class MainWindowController: self.ha_enable = require_child(self.window, "haEnableCheck", QCheckBox) self.ha_server_ip = require_child(self.window, "haServerIpField", QLineEdit) + # AI Bridge (formerly "AI Provider") self.ai_enable = require_child(self.window, "aiEnableCheck", QCheckBox) - self.ai_provider = require_child(self.window, "aiProviderCombo", QComboBox) - self.ai_endpoint = require_child(self.window, "aiEndpointField", QLineEdit) - self.ai_key = require_child(self.window, "aiKeyField", QLineEdit) - self.tokens_used = require_child(self.window, "tokensUsedLabel", QLabel) + self.ai_mode = require_child(self.window, "aiProviderCombo", QComboBox) + self.ai_server_base_url = require_child(self.window, "aiEndpointField", QLineEdit) + self.ai_asr_host = require_child(self.window, "aiKeyField", QLineEdit) + self.ai_record_seconds = require_child(self.window, "aiBridgeRecordSecondsSpin", QSpinBox) + self.ai_use_asr_service_stt = require_child(self.window, "aiBridgeUseAsrServiceSttCheck", QCheckBox) + self.ai_asr_port = require_child(self.window, "aiBridgeAsrPortSpin", QSpinBox) + self.ai_asr_audio_source = require_child(self.window, "aiBridgeAsrAudioSourceField", QLineEdit) + self.ai_asr_timeout_ms = require_child(self.window, "aiBridgeAsrTimeoutSpin", QSpinBox) + self.ai_asr_auto_start = require_child(self.window, "aiBridgeAsrAutoStartCheck", QCheckBox) + self.ai_followup_enabled = require_child(self.window, "aiBridgeFollowupEnabledCheck", QCheckBox) + self.ai_followup_delay_ms = require_child(self.window, "aiBridgeFollowupDelaySpin", QSpinBox) + self.edit_ai_bridge_button = require_child(self.window, "editAiBridgeConfigButton", QPushButton) + + self._ai_bridge_obj: Optional[dict[str, Any]] = None + + # Tool settings + self.enable_logging_check = require_child(self.window, "enableLoggingCheck", QCheckBox) + + # Config editor (main panel "Config" section) + self.config_file_combo = require_child(self.window, "configFileCombo", QComboBox) + self.config_read_button = require_child(self.window, "configReadButton", QPushButton) + self.config_write_button = require_child(self.window, "configWriteButton", QPushButton) + self.config_status_label = require_child(self.window, "configFileStatusLabel", QLabel) + self.config_editor = require_child(self.window, "configEditor", QPlainTextEdit) + self.config_activity_log = require_child(self.window, "configActivityLog", QPlainTextEdit) + + self._config_last_read_text: Optional[str] = None + self._config_paths: list[str] = [] # Jibo card controls self.robot_settings_button = require_child(self.window, "RobotSettings", QPushButton) self.robot_action_combo = require_child(self.window, "comboBox", QComboBox) self.jibo_image = require_child(self.window, "jiboImage", QLabel) + self._robot_settings_window: Optional[object] = None + # Update page self.install_button = require_child(self.window, "installButton", QPushButton) self.check_updates_button = require_child(self.window, "checkUpdatesButton", QPushButton) @@ -83,6 +115,7 @@ class MainWindowController: self._wire_signals() self._sync_enabled() self._sync_all() + self._populate_config_file_combo() @property def host(self) -> str: @@ -113,16 +146,22 @@ class MainWindowController: "}" ) - # Provider choices - self.ai_provider.clear() - self.ai_provider.addItems(["Self-hosted", "OpenAI", "Other"]) + # AI Bridge mode choices + self.ai_mode.clear() + self.ai_mode.addItems(["TEXT", "AUDIO"]) # Robot controls start disabled until connected. self.robot_settings_button.setEnabled(False) self.robot_action_combo.setEnabled(False) + # Config editor defaults + self.config_editor.setPlaceholderText("Select a config file, then Read") + self.config_activity_log.setReadOnly(True) + self.config_activity_log.setPlaceholderText("Logging is disabled") + self.config_read_button.setEnabled(False) + self.config_write_button.setEnabled(False) + # Defaults - self.tokens_used.setText("-1") self.connect_button.setText("Connect") self.jibo_title.setText("Connect Your Jibo") @@ -136,21 +175,83 @@ class MainWindowController: self.ha_enable.toggled.connect(self._sync_enabled) self.ai_enable.toggled.connect(self._sync_enabled) + self.robot_settings_button.clicked.connect(self._open_robot_settings) + + self.edit_ai_bridge_button.clicked.connect(self._jump_to_ai_bridge_config) + + # Keep AI Bridge in-memory config in sync with UI edits. + self.ai_enable.toggled.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_mode.currentIndexChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_server_base_url.textChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_asr_host.textChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_record_seconds.valueChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_use_asr_service_stt.toggled.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_asr_port.valueChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_asr_audio_source.textChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_asr_timeout_ms.valueChanged.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_asr_auto_start.toggled.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_followup_enabled.toggled.connect(self._sync_ai_bridge_obj_from_ui) + self.ai_followup_delay_ms.valueChanged.connect(self._sync_ai_bridge_obj_from_ui) + + self.config_file_combo.currentIndexChanged.connect(self._on_config_combo_changed) + self.config_read_button.clicked.connect(self._read_selected_config) + self.config_write_button.clicked.connect(self._write_selected_config) + self.config_editor.textChanged.connect(self._on_config_editor_changed) + self.enable_logging_check.toggled.connect(self._sync_logging_placeholders) + self.install_button.clicked.connect(self._launch_installer) self.check_updates_button.clicked.connect(self._launch_updater) + def _open_robot_settings(self) -> None: + if not self.session_connected or self._ssh_client is None: + self.status_text.setText("Connect to a Jibo first") + return + + try: + from .robot_settings_window import RobotSettingsWindow # local import to keep startup fast + except Exception as e: + self.status_text.setText(f"Failed to load Robot Settings UI: {e}") + return + + if self._robot_settings_window is None: + self._robot_settings_window = RobotSettingsWindow( + ssh_client=self._ssh_client, + logging_enabled_check=self.enable_logging_check, + ) + # Refresh the SSH client reference in case we reconnected. + try: + self._robot_settings_window.set_ssh_client(self._ssh_client) # type: ignore[attr-defined] + except Exception: + pass + try: + self._robot_settings_window.show() # type: ignore[attr-defined] + except Exception: + pass + def _sync_enabled(self) -> None: self.preview_connected_check.setEnabled(self.override_check.isChecked()) self.ha_server_ip.setEnabled(self.ha_enable.isChecked()) ai_enabled = self.ai_enable.isChecked() - self.ai_provider.setEnabled(ai_enabled) - self.ai_endpoint.setEnabled(ai_enabled) - self.ai_key.setEnabled(ai_enabled) + self.ai_mode.setEnabled(ai_enabled) + self.ai_server_base_url.setEnabled(ai_enabled) + self.ai_asr_host.setEnabled(ai_enabled) + self.ai_record_seconds.setEnabled(ai_enabled) + self.ai_use_asr_service_stt.setEnabled(ai_enabled) + self.ai_asr_port.setEnabled(ai_enabled) + self.ai_asr_audio_source.setEnabled(ai_enabled) + self.ai_asr_timeout_ms.setEnabled(ai_enabled) + self.ai_asr_auto_start.setEnabled(ai_enabled) + self.ai_followup_enabled.setEnabled(ai_enabled) + self.ai_followup_delay_ms.setEnabled(ai_enabled) # Connection button enabled unless a connect attempt is in progress. self.connect_button.setEnabled(not self._connecting) + connected = self.session_connected + self.config_read_button.setEnabled(connected and self.config_file_combo.count() > 0) + # write button is controlled by editor dirty state + def _sync_all(self) -> None: host = self.host connected = self.session_connected @@ -166,6 +267,8 @@ class MainWindowController: self.robot_action_combo.setEnabled(connected) self.connect_button.setText("Disconnect" if connected else "Connect") + self._sync_enabled() + dot_color = "#2ecc71" if connected else ("#e67e22" if host else "#bdc3c7") _set_dot(self.conn_dot, dot_color) _set_dot(self.status_dot, dot_color) @@ -215,8 +318,304 @@ class MainWindowController: finally: self._ssh_client = None self._identity = None + if self._robot_settings_window is not None: + try: + self._robot_settings_window.set_ssh_client(None) # type: ignore[attr-defined] + except Exception: + pass + self.config_status_label.setText("Disconnected") + self._config_last_read_text = None + self.config_write_button.setEnabled(False) self._sync_all() + def _sync_logging_placeholders(self) -> None: + if self.enable_logging_check.isChecked(): + self.config_activity_log.setPlaceholderText("") + else: + self.config_activity_log.setPlaceholderText("Logging is disabled") + + def _log(self, message: str) -> None: + if not self.enable_logging_check.isChecked(): + return + self.config_activity_log.appendPlainText(message) + + def _populate_config_file_combo(self) -> None: + # Populate from inventory, excluding /usr/local/etc (those belong under Robot Settings) + entries = load_config_entries_from_values_md() + paths = [e.remote_path for e in entries if not e.is_usr_local_etc] + paths = sorted(paths) + self._config_paths = paths + + self.config_file_combo.blockSignals(True) + try: + self.config_file_combo.clear() + self.config_file_combo.addItems(paths) + finally: + self.config_file_combo.blockSignals(False) + + if paths: + self.config_status_label.setText("Select a config to view/edit") + else: + self.config_status_label.setText("No configs found in inventory") + + def _jump_to_ai_bridge_config(self) -> None: + target = self._AI_BRIDGE_PATH + idx = self.config_file_combo.findText(target) + if idx < 0: + self.config_file_combo.addItem(target) + idx = self.config_file_combo.findText(target) + + if idx >= 0: + self.config_file_combo.setCurrentIndex(idx) + self._read_selected_config() + + # Seed editor with the current AI Bridge UI state so the user can + # immediately press Write. + try: + merged = self._merged_ai_bridge_obj_from_ui() + desired_text = json.dumps(merged, indent=2, ensure_ascii=False) + "\n" + self.config_editor.setPlainText(desired_text) + except Exception: + pass + return + self.config_status_label.setText("AI Bridge config not selectable") + + def _on_config_combo_changed(self) -> None: + self._config_last_read_text = None + self.config_write_button.setEnabled(False) + p = self._selected_config_path() + self.config_status_label.setText(p or "Select a config to view/edit") + + def _selected_config_path(self) -> Optional[str]: + p = self.config_file_combo.currentText().strip() + if p.startswith("/"): + return p + return None + + def _sftp_read_text(self, remote_path: str) -> str: + if self._ssh_client is None: + raise RuntimeError("Not connected") + sftp = self._ssh_client.open_sftp() + try: + with sftp.open(remote_path, "r") as f: + raw = f.read() + finally: + sftp.close() + if isinstance(raw, bytes): + return raw.decode("utf-8", errors="replace") + return str(raw) + + def _sftp_write_text(self, remote_path: str, text: str) -> None: + if self._ssh_client is None: + raise RuntimeError("Not connected") + sftp = self._ssh_client.open_sftp() + try: + with sftp.open(remote_path, "w") as f: + f.write(text.encode("utf-8")) + finally: + sftp.close() + + def _ssh_exec(self, command: str, *, timeout: int = 30) -> tuple[int, str, str]: + if self._ssh_client is None: + raise RuntimeError("Not connected") + stdin, stdout, stderr = self._ssh_client.exec_command(command, timeout=timeout) + _ = stdin + out = stdout.read() + err = stderr.read() + out_s = out.decode("utf-8", errors="replace") if isinstance(out, bytes) else str(out) + err_s = err.decode("utf-8", errors="replace") if isinstance(err, bytes) else str(err) + code = stdout.channel.recv_exit_status() + return int(code), out_s, err_s + + def _read_selected_config(self) -> None: + p = self._selected_config_path() + if not p: + return + if not self.session_connected: + self.config_status_label.setText("Connect to a Jibo first") + return + + try: + text = self._sftp_read_text(p) + self._config_last_read_text = text + self.config_editor.setPlainText(text) + self.config_write_button.setEnabled(False) + self.config_status_label.setText(f"Loaded {p}") + self._log(f"READ {p} ({len(text)} bytes)") + + if p == self._AI_BRIDGE_PATH: + try: + obj = json.loads(text) + if isinstance(obj, dict): + self._ai_bridge_obj = obj + self._apply_ai_bridge_obj_to_ui(obj) + except Exception: + pass + except Exception as e: + self.config_status_label.setText(f"Read failed: {e}") + self._log(f"READ FAILED {p}: {e}") + + def _load_ai_bridge_from_robot(self) -> None: + if self._ssh_client is None: + return + try: + raw = self._sftp_read_text(self._AI_BRIDGE_PATH) + except Exception: + return + try: + obj = json.loads(raw) + except Exception: + return + if not isinstance(obj, dict): + return + self._ai_bridge_obj = obj + self._apply_ai_bridge_obj_to_ui(obj) + self._log(f"READ {self._AI_BRIDGE_PATH} (auto)") + + def _apply_ai_bridge_obj_to_ui(self, obj: dict[str, Any]) -> None: + widgets = [ + self.ai_enable, + self.ai_mode, + self.ai_server_base_url, + self.ai_asr_host, + self.ai_record_seconds, + self.ai_use_asr_service_stt, + self.ai_asr_port, + self.ai_asr_audio_source, + self.ai_asr_timeout_ms, + self.ai_asr_auto_start, + self.ai_followup_enabled, + self.ai_followup_delay_ms, + ] + for w in widgets: + w.blockSignals(True) + try: + self.ai_enable.setChecked(bool(obj.get("enabled", True))) + + mode = str(obj.get("mode", "TEXT")).upper() + idx = self.ai_mode.findText(mode) + if idx >= 0: + self.ai_mode.setCurrentIndex(idx) + + self.ai_server_base_url.setText(str(obj.get("serverBaseUrl", ""))) + self.ai_record_seconds.setValue(int(obj.get("recordSeconds", 5))) + + self.ai_use_asr_service_stt.setChecked(bool(obj.get("useAsrServiceStt", True))) + self.ai_asr_host.setText(str(obj.get("asrServiceHost", "127.0.0.1"))) + self.ai_asr_port.setValue(int(obj.get("asrServicePort", 8088))) + self.ai_asr_audio_source.setText(str(obj.get("asrAudioSourceId", "alsa1"))) + self.ai_asr_timeout_ms.setValue(int(obj.get("asrTimeoutMs", 15000))) + self.ai_asr_auto_start.setChecked(bool(obj.get("asrAutoStart", True))) + + self.ai_followup_enabled.setChecked(bool(obj.get("followupEnabled", True))) + self.ai_followup_delay_ms.setValue(int(obj.get("followupDelayMs", 250))) + finally: + for w in widgets: + w.blockSignals(False) + self._sync_enabled() + + def _ai_bridge_fields_from_ui(self) -> dict[str, Any]: + mode = self.ai_mode.currentText().strip() or "TEXT" + return { + "enabled": bool(self.ai_enable.isChecked()), + "mode": mode, + "serverBaseUrl": self.ai_server_base_url.text().strip(), + "recordSeconds": int(self.ai_record_seconds.value()), + "useAsrServiceStt": bool(self.ai_use_asr_service_stt.isChecked()), + "asrServiceHost": self.ai_asr_host.text().strip() or "127.0.0.1", + "asrServicePort": int(self.ai_asr_port.value()), + "asrAudioSourceId": self.ai_asr_audio_source.text().strip() or "alsa1", + "asrTimeoutMs": int(self.ai_asr_timeout_ms.value()), + "asrAutoStart": bool(self.ai_asr_auto_start.isChecked()), + "followupEnabled": bool(self.ai_followup_enabled.isChecked()), + "followupDelayMs": int(self.ai_followup_delay_ms.value()), + } + + def _merged_ai_bridge_obj_from_ui(self) -> dict[str, Any]: + base: dict[str, Any] = {} + if isinstance(self._ai_bridge_obj, dict): + base.update(self._ai_bridge_obj) + base.update(self._ai_bridge_fields_from_ui()) + return base + + def _sync_ai_bridge_obj_from_ui(self, *_args: Any) -> None: + # Keep unknown keys (if any) from the on-robot JSON. + try: + self._ai_bridge_obj = self._merged_ai_bridge_obj_from_ui() + except Exception: + pass + + def _on_config_editor_changed(self) -> None: + if self._config_last_read_text is None: + self.config_write_button.setEnabled(False) + return + self.config_write_button.setEnabled(self.config_editor.toPlainText() != self._config_last_read_text) + + def _write_selected_config(self) -> None: + p = self._selected_config_path() + if not p: + return + if not self.session_connected: + self.config_status_label.setText("Connect to a Jibo first") + return + + new_text_raw = self.config_editor.toPlainText() + try: + new_obj = json.loads(new_text_raw) + except Exception as e: + self.config_status_label.setText(f"Invalid JSON: {e}") + return + + new_text = json.dumps(new_obj, indent=2, ensure_ascii=False) + "\n" + + try: + old_text = self._sftp_read_text(p) + except Exception: + old_text = "" + try: + old_obj: Any = json.loads(old_text) if old_text else MISSING + except Exception: + old_obj = MISSING + + # Safety: if a /usr/local path ever ends up here, handle remount. + if p.startswith("/usr/local/"): + cmd = "mount -o remount,rw /usr/local" + self._log(f"EXEC {cmd}") + code, _out, err = self._ssh_exec(cmd, timeout=30) + if code != 0: + self.config_status_label.setText("Remount /usr/local failed") + self._log(f"EXEC FAILED ({code}) {cmd} :: {err.strip()}") + return + + if old_obj is not MISSING: + diffs = diff_json(old_obj, new_obj) + if diffs: + self._log(f"WRITE {p} (changes: {len(diffs)})") + for path, ov, nv in diffs[:200]: + if is_sensitive_path(path): + self._log(f" {path}: *** -> ***") + continue + o = "" if ov is MISSING else short_json(ov) + n = "" if nv is MISSING else short_json(nv) + self._log(f" {path}: {o} -> {n}") + if len(diffs) > 200: + self._log(f" ... ({len(diffs) - 200} more)") + else: + self._log(f"WRITE {p} (no JSON diffs detected)") + else: + self._log(f"WRITE {p} (no previous JSON to diff)") + + try: + self._sftp_write_text(p, new_text) + self._log(f"WROTE {p} ({len(new_text)} bytes)") + self._config_last_read_text = new_text + self.config_editor.setPlainText(new_text) + self.config_write_button.setEnabled(False) + self.config_status_label.setText(f"Wrote {p}") + except Exception as e: + self.config_status_label.setText(f"Write failed: {e}") + self._log(f"WRITE FAILED {p}: {e}") + def _toggle_connection(self) -> None: if self.session_connected: self._disconnect() @@ -271,6 +670,12 @@ class MainWindowController: self._ssh_client = client self._identity = identity if isinstance(identity, dict) else None self.status_text.setText(f"Connected via SSH to {host}") + + # Auto-populate AI Bridge section when connected. + try: + self._load_ai_bridge_from_robot() + except Exception: + pass except Exception as e: try: client.close() diff --git a/JiboTools/JiboTools/gui/robot_settings_window.py b/JiboTools/JiboTools/gui/robot_settings_window.py new file mode 100644 index 0000000..960d439 --- /dev/null +++ b/JiboTools/JiboTools/gui/robot_settings_window.py @@ -0,0 +1,313 @@ +from __future__ import annotations + +import json +import time +from typing import Any, Optional + +from PySide6.QtCore import Qt, Slot +from PySide6.QtWidgets import ( + QAbstractItemView, + QHBoxLayout, + QLabel, + QMainWindow, + QMessageBox, + QPushButton, + QPlainTextEdit, + QSplitter, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, + QWidget, + QCheckBox, +) +from .config_inventory import ConfigEntry, MISSING, diff_json, is_sensitive_path, load_config_entries_from_values_md, short_json + + +class RobotSettingsWindow: + def __init__(self, *, ssh_client: object, logging_enabled_check: QCheckBox) -> None: + self._ssh_client: Optional[object] = ssh_client + self._logging_enabled_check = logging_enabled_check + + self.window = QMainWindow() + self.window.setWindowTitle("Robot Settings") + + root = QWidget() + self.window.setCentralWidget(root) + outer = QVBoxLayout(root) + outer.setContentsMargins(12, 12, 12, 12) + outer.setSpacing(10) + + self.status = QLabel("Select a config to view/edit") + self.status.setTextInteractionFlags(Qt.TextSelectableByMouse) + outer.addWidget(self.status) + + splitter = QSplitter(Qt.Horizontal) + outer.addWidget(splitter, 1) + + # Left: tree + self.tree = QTreeWidget() + self.tree.setHeaderHidden(True) + self.tree.setSelectionMode(QAbstractItemView.SingleSelection) + splitter.addWidget(self.tree) + + # Right: editor + buttons + log + right = QWidget() + right_layout = QVBoxLayout(right) + right_layout.setContentsMargins(0, 0, 0, 0) + right_layout.setSpacing(8) + + btn_row = QWidget() + btn_layout = QHBoxLayout(btn_row) + btn_layout.setContentsMargins(0, 0, 0, 0) + btn_layout.setSpacing(8) + + self.read_button = QPushButton("Read") + self.write_button = QPushButton("Write") + self.write_button.setEnabled(False) + btn_layout.addWidget(self.read_button) + btn_layout.addWidget(self.write_button) + btn_layout.addStretch(1) + + right_layout.addWidget(btn_row) + + self.editor = QPlainTextEdit() + self.editor.setPlaceholderText("Select a config file from the list to load it") + right_layout.addWidget(self.editor, 1) + + self.log = QPlainTextEdit() + self.log.setReadOnly(True) + self.log.setMaximumBlockCount(2000) + self.log.setPlaceholderText("Logging is disabled") + right_layout.addWidget(QLabel("Activity log")) + right_layout.addWidget(self.log, 1) + + splitter.addWidget(right) + splitter.setStretchFactor(0, 0) + splitter.setStretchFactor(1, 1) + splitter.setSizes([260, 520]) + + self._entries: list[ConfigEntry] = [] + self._current_remote_path: Optional[str] = None + self._last_read_text: Optional[str] = None + + self._populate_tree() + self._wire_signals() + + self._sync_logging_ui() + + def show(self) -> None: + self.window.show() + self.window.raise_() + self.window.activateWindow() + + def set_ssh_client(self, client: Optional[object]) -> None: + self._ssh_client = client + + def _wire_signals(self) -> None: + self.tree.itemSelectionChanged.connect(self._on_tree_selection) + self.read_button.clicked.connect(self._read_current) + self.write_button.clicked.connect(self._write_current) + self.editor.textChanged.connect(self._on_editor_changed) + self._logging_enabled_check.toggled.connect(self._sync_logging_ui) + + def _sync_logging_ui(self) -> None: + if self._logging_enabled_check.isChecked(): + self.log.setPlaceholderText("") + else: + self.log.setPlaceholderText("Logging is disabled") + + def _log(self, message: str) -> None: + if not self._logging_enabled_check.isChecked(): + return + ts = time.strftime("%H:%M:%S") + self.log.appendPlainText(f"[{ts}] {message}") + + def _populate_tree(self) -> None: + self.tree.clear() + self._entries = load_config_entries_from_values_md() + + root_settings = QTreeWidgetItem(["Settings (/usr/local/etc)"]) + self.tree.addTopLevelItem(root_settings) + root_settings.setExpanded(True) + + def add_entry(parent: QTreeWidgetItem, entry: ConfigEntry) -> None: + item = QTreeWidgetItem([entry.remote_path]) + item.setData(0, Qt.UserRole, entry.remote_path) + parent.addChild(item) + + count = 0 + for e in sorted(self._entries, key=lambda x: x.remote_path): + if e.is_usr_local_etc: + add_entry(root_settings, e) + count += 1 + + if count == 0: + root_settings.addChild(QTreeWidgetItem(["(No /usr/local/etc configs found in inventory)"])) + + def _selected_remote_path(self) -> Optional[str]: + items = self.tree.selectedItems() + if not items: + return None + item = items[0] + p = item.data(0, Qt.UserRole) + if isinstance(p, str) and p.startswith("/"): + return p + return None + + @Slot() + def _on_tree_selection(self) -> None: + p = self._selected_remote_path() + self._current_remote_path = p + self.write_button.setEnabled(False) + self._last_read_text = None + if p: + self.status.setText(p) + self._read_current() + else: + self.status.setText("Select a config to view/edit") + + @Slot() + def _on_editor_changed(self) -> None: + # Enable write only if we have a loaded file and text changed. + if not self._current_remote_path or self._last_read_text is None: + self.write_button.setEnabled(False) + return + self.write_button.setEnabled(self.editor.toPlainText() != self._last_read_text) + + def _require_ssh(self) -> object: + if self._ssh_client is None: + raise RuntimeError("Not connected") + return self._ssh_client + + def _ssh_exec(self, command: str, *, timeout: int = 30) -> tuple[int, str, str]: + client = self._require_ssh() + stdin, stdout, stderr = client.exec_command(command, timeout=timeout) # type: ignore[attr-defined] + _ = stdin + out = stdout.read() + err = stderr.read() + if isinstance(out, bytes): + out_s = out.decode("utf-8", errors="replace") + else: + out_s = str(out) + if isinstance(err, bytes): + err_s = err.decode("utf-8", errors="replace") + else: + err_s = str(err) + code = stdout.channel.recv_exit_status() # type: ignore[attr-defined] + return int(code), out_s, err_s + + def _sftp_read_text(self, remote_path: str) -> str: + client = self._require_ssh() + sftp = client.open_sftp() # type: ignore[attr-defined] + try: + with sftp.open(remote_path, "r") as f: + raw = f.read() + finally: + sftp.close() + if isinstance(raw, bytes): + return raw.decode("utf-8", errors="replace") + return str(raw) + + def _sftp_write_text(self, remote_path: str, text: str) -> None: + client = self._require_ssh() + sftp = client.open_sftp() # type: ignore[attr-defined] + try: + with sftp.open(remote_path, "w") as f: + data = text.encode("utf-8") + f.write(data) + finally: + sftp.close() + + @Slot() + def _read_current(self) -> None: + remote_path = self._current_remote_path + if not remote_path: + return + + try: + text = self._sftp_read_text(remote_path) + self._log(f"READ {remote_path} ({len(text)} bytes)") + self.editor.setPlainText(text) + self._last_read_text = text + self.write_button.setEnabled(False) + except Exception as e: + self.status.setText(f"Read failed: {e}") + self._log(f"READ FAILED {remote_path}: {e}") + QMessageBox.critical(self.window, "Read failed", str(e)) + + @Slot() + def _write_current(self) -> None: + remote_path = self._current_remote_path + if not remote_path: + return + + new_text_raw = self.editor.toPlainText() + + # Validate JSON if possible; this tool is focused on strict JSON configs. + try: + new_obj = json.loads(new_text_raw) + except Exception as e: + QMessageBox.warning(self.window, "Invalid JSON", f"JSON parse failed: {e}") + return + + # Canonicalize to keep robot-side JSON strict/clean. + new_text = json.dumps(new_obj, indent=2, ensure_ascii=False) + "\n" + + try: + old_text = self._sftp_read_text(remote_path) + except Exception: + old_text = "" + + old_obj: Any + try: + old_obj = json.loads(old_text) if old_text else MISSING + except Exception: + old_obj = MISSING + + # Mounted dir special case: /usr/local/* is often read-only until remount. + if remote_path.startswith("/usr/local/"): + cmd = "mount -o remount,rw /usr/local" + self._log(f"EXEC {cmd}") + code, out, err = self._ssh_exec(cmd, timeout=30) + if code != 0: + self._log(f"EXEC FAILED ({code}) {cmd} :: {err.strip()}") + QMessageBox.critical( + self.window, + "Remount failed", + f"Failed to remount /usr/local read-write (exit {code}).\n\n{err.strip()}", + ) + return + if out.strip(): + self._log(out.strip()) + + # Compute diffs (best-effort). + if old_obj is not MISSING: + diffs = diff_json(old_obj, new_obj) + if diffs: + self._log(f"WRITE {remote_path} (changes: {len(diffs)})") + for p, ov, nv in diffs[:200]: + if is_sensitive_path(p): + self._log(f" {p}: *** -> ***") + continue + o = "" if ov is MISSING else short_json(ov) + n = "" if nv is MISSING else short_json(nv) + self._log(f" {p}: {o} -> {n}") + if len(diffs) > 200: + self._log(f" ... ({len(diffs) - 200} more)") + else: + self._log(f"WRITE {remote_path} (no JSON diffs detected)") + else: + self._log(f"WRITE {remote_path} (no previous JSON to diff)") + + try: + self._sftp_write_text(remote_path, new_text) + self._log(f"WROTE {remote_path} ({len(new_text)} bytes)") + # Refresh read baseline. + self.editor.setPlainText(new_text) + self._last_read_text = new_text + self.write_button.setEnabled(False) + self.status.setText(f"Wrote {remote_path}") + except Exception as e: + self.status.setText(f"Write failed: {e}") + self._log(f"WRITE FAILED {remote_path}: {e}") + QMessageBox.critical(self.window, "Write failed", str(e)) diff --git a/JiboTools/JiboTools/gui/tool_runner.ui b/JiboTools/JiboTools/gui/tool_runner.ui index d95c938..1d42876 100644 --- a/JiboTools/JiboTools/gui/tool_runner.ui +++ b/JiboTools/JiboTools/gui/tool_runner.ui @@ -98,6 +98,61 @@ + + + + Tool description + + + true + + + + + + + 10 + + + + + I already have a full eMMC dump (.bin) + + + + + + + Dump path (passed as --dump-path) + + + + + + + Browse… + + + + + + + + + 0 + + + + + + + Idle + + + true + + + diff --git a/JiboTools/JiboTools/gui/tool_runner_window.py b/JiboTools/JiboTools/gui/tool_runner_window.py index 40bbe9b..c3916eb 100644 --- a/JiboTools/JiboTools/gui/tool_runner_window.py +++ b/JiboTools/JiboTools/gui/tool_runner_window.py @@ -1,11 +1,22 @@ from __future__ import annotations import shlex +import re from pathlib import Path from PySide6.QtCore import QObject, Slot from PySide6.QtGui import QCloseEvent, QTextCursor -from PySide6.QtWidgets import QMainWindow, QApplication, QLabel, QLineEdit, QPushButton, QPlainTextEdit +from PySide6.QtWidgets import ( + QMainWindow, + QApplication, + QLabel, + QLineEdit, + QPushButton, + QPlainTextEdit, + QCheckBox, + QFileDialog, + QProgressBar, +) from .process_runner import ProcessRunner, resolve_python_invocation from .terminal_helper import TerminalHelper @@ -18,6 +29,10 @@ class ToolRunnerWindow(QObject): self._script = script self._is_updater = "jibo_updater.py" in script + self._is_installer = "jibo_automod.py" in script + + self._output_buffer = "" + self._last_step_total: int | None = None ui_path = Path(__file__).resolve().parent / "tool_runner.ui" self.window = load_ui(ui_path) @@ -34,6 +49,12 @@ class ToolRunnerWindow(QObject): self._open_terminal = require_child(self.window, "openTerminalButton", QPushButton) self._host_field = require_child(self.window, "hostField", QLineEdit) self._extra_args = require_child(self.window, "extraArgsField", QLineEdit) + self._description = require_child(self.window, "descriptionLabel", QLabel) + self._use_existing_dump = require_child(self.window, "useExistingDumpCheck", QCheckBox) + self._dump_path = require_child(self.window, "dumpPathField", QLineEdit) + self._browse_dump = require_child(self.window, "browseDumpButton", QPushButton) + self._progress = require_child(self.window, "progressBar", QProgressBar) + self._current_step = require_child(self.window, "currentStepLabel", QLabel) self._log = require_child(self.window, "logEdit", QPlainTextEdit) self._status = require_child(self.window, "statusLabel", QLabel) self._clear = require_child(self.window, "clearLogButton", QPushButton) @@ -42,6 +63,40 @@ class ToolRunnerWindow(QObject): self._host_field.setVisible(self._is_updater) + # Installer-specific UX + self._use_existing_dump.setVisible(self._is_installer) + self._dump_path.setVisible(self._is_installer) + self._browse_dump.setVisible(self._is_installer) + self._progress.setVisible(self._is_installer) + self._current_step.setVisible(self._is_installer) + + if self._is_installer: + self._description.setText( + "This installer will: build Shofel, dump eMMC (or use an existing dump), " + "analyze partitions, modify /var/jibo/mode.json to enable developer mode, " + "write the modified /var partition back, and optionally verify.\n" + "Warning: Do not disconnect the robot during reads/writes." + ) + elif self._is_updater: + self._description.setText( + "Updater will: download/extract a JiboOs release and upload the build/ overlay to the robot over SSH." + ) + else: + self._description.setText("Run the selected tool with optional arguments.") + + self._dump_path.setEnabled(False) + self._browse_dump.setEnabled(False) + + self._use_existing_dump.toggled.connect(self._sync_dump_widgets) + self._browse_dump.clicked.connect(self._pick_dump_path) + self._sync_dump_widgets() + + self._progress.setRange(0, 6) + self._progress.setValue(0) + self._progress.setTextVisible(True) + self._progress.setFormat("Step %v/%m") + self._current_step.setText("Idle") + self._start_stop.clicked.connect(self._toggle) self._open_terminal.clicked.connect(self._open_in_terminal) self._clear.clicked.connect(lambda: self._log.setPlainText("")) @@ -68,8 +123,16 @@ class ToolRunnerWindow(QObject): args += ["--ip", host] extra = self._extra_args.text().strip() - if extra: - args += shlex.split(extra) + extra_args: list[str] = shlex.split(extra) if extra else [] + + # Installer convenience: if the user has an existing dump, pass it via --dump-path + if self._is_installer and self._use_existing_dump.isChecked(): + dump_path = self._dump_path.text().strip() + if dump_path and "--dump-path" not in extra_args: + extra_args += ["--dump-path", dump_path] + + if extra_args: + args += extra_args return args @@ -78,6 +141,23 @@ class ToolRunnerWindow(QObject): if self.runner.running: self.runner.stop() else: + if self._is_installer and self._use_existing_dump.isChecked() and not self._dump_path.text().strip(): + self._status.setText("Pick a dump file (or uncheck 'existing dump')") + return + if self._is_installer and self._use_existing_dump.isChecked(): + p = Path(self._dump_path.text().strip()) + if not p.exists(): + self._status.setText("Dump file not found") + return + + # Reset progress state for a new run. + self._output_buffer = "" + self._last_step_total = None + if self._is_installer: + self._progress.setRange(0, 0) + self._progress.setValue(0) + self._current_step.setText("Starting…") + program, prefix = resolve_python_invocation() self.runner.start(program, [*prefix, *self._build_args()]) @@ -93,14 +173,30 @@ class ToolRunnerWindow(QObject): self._log.insertPlainText(chunk) self._log.moveCursor(QTextCursor.End) + if self._is_installer: + self._ingest_for_progress(chunk) + def _sync_buttons(self) -> None: running = self.runner.running self._start_stop.setText("Stop" if running else "Start") self._open_terminal.setEnabled(not running) + if not running and self._is_installer: + # Leave progress/status in a meaningful final state. + if self.runner.exitCode == 0 and self._last_step_total: + self._progress.setRange(0, self._last_step_total) + self._progress.setValue(self._last_step_total) + if self._current_step.text().strip() in ("", "Starting…"): + self._current_step.setText("Finished") + elif self.runner.exitCode > 0: + if self._current_step.text().strip() in ("", "Starting…"): + self._current_step.setText("Exited with errors") def _sync_status(self) -> None: if self.runner.running: self._status.setText("Running...") + # Indeterminate until we see a structured step marker. + if self._is_installer and self._last_step_total is None: + self._progress.setRange(0, 0) return code = self.runner.exitCode if code >= 0: @@ -115,6 +211,85 @@ class ToolRunnerWindow(QObject): pass event.accept() + @Slot(bool) + def _sync_dump_widgets(self, checked: bool | None = None) -> None: + enabled = bool(checked) if checked is not None else self._use_existing_dump.isChecked() + self._dump_path.setEnabled(enabled) + self._browse_dump.setEnabled(enabled) + + @Slot() + def _pick_dump_path(self) -> None: + start_dir = str(Path.home()) + path, _ = QFileDialog.getOpenFileName( + self.window, + "Select full eMMC dump (.bin)", + start_dir, + "Binary images (*.bin *.img *.raw);;All files (*)", + ) + if path: + self._dump_path.setText(path) + + def _ingest_for_progress(self, chunk: str) -> None: + self._output_buffer += chunk + lines = self._output_buffer.splitlines(keepends=True) + + # Keep any partial line for the next chunk. + if lines and not (lines[-1].endswith("\n") or lines[-1].endswith("\r")): + self._output_buffer = lines[-1] + lines = lines[:-1] + else: + self._output_buffer = "" + + for line in lines: + clean = _strip_ansi(line).strip() + if not clean: + continue + + # Also surface meaningful non-step status lines (RCM detection, warnings, etc.) + if clean.startswith(("ℹ", "⚠", "✓", "✗")) or "RCM" in clean: + msg = _clean_status_line(clean) + if msg and not msg.startswith("["): + self._current_step.setText(msg) + + m = re.search(r"\[(\d+)\s*/\s*(\d+)\]\s*(.+)$", clean) + if not m: + continue + step = int(m.group(1)) + total = int(m.group(2)) + msg = m.group(3).strip() + + # Some flows use [0/6] for dependency checks. + if total > 0: + self._last_step_total = total + self._progress.setRange(0, total) + self._progress.setValue(max(0, min(step, total))) + self._progress.setFormat("Step %v/%m") + + if msg: + self._current_step.setText(msg) + + def _on_close(self, event: QCloseEvent) -> None: + try: + self.runner.stop() + except Exception: + pass + event.accept() + + +_ANSI_RE = re.compile(r"\x1b\[[0-9;]*[A-Za-z]") + + +def _strip_ansi(s: str) -> str: + return _ANSI_RE.sub("", s) + + +def _clean_status_line(s: str) -> str: + # Drop leading glyphs used by the CLI (info/warn/success/error) + s = re.sub(r"^[✓⚠✗ℹ]\s+", "", s).strip() + # Collapse extra whitespace + s = re.sub(r"\s+", " ", s).strip() + return s + def run_tool_window(*, title: str, script: str) -> int: app = QApplication.instance() or QApplication([]) diff --git a/JiboTools/JiboTools/gui/ui_tool_runner.py b/JiboTools/JiboTools/gui/ui_tool_runner.py index 8bb3424..b732498 100644 --- a/JiboTools/JiboTools/gui/ui_tool_runner.py +++ b/JiboTools/JiboTools/gui/ui_tool_runner.py @@ -15,9 +15,10 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QGradient, QIcon, QImage, QKeySequence, QLinearGradient, QPainter, QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit, - QMainWindow, QPlainTextEdit, QPushButton, QSizePolicy, - QSpacerItem, QStatusBar, QVBoxLayout, QWidget) +from PySide6.QtWidgets import (QApplication, QCheckBox, QHBoxLayout, QLabel, + QLineEdit, QMainWindow, QPlainTextEdit, QProgressBar, + QPushButton, QSizePolicy, QSpacerItem, QStatusBar, + QVBoxLayout, QWidget) class Ui_ToolRunnerWindow(object): def setupUi(self, ToolRunnerWindow): @@ -75,6 +76,45 @@ class Ui_ToolRunnerWindow(object): self.rootLayout.addLayout(self.argsLayout) + self.descriptionLabel = QLabel(self.centralwidget) + self.descriptionLabel.setObjectName(u"descriptionLabel") + self.descriptionLabel.setWordWrap(True) + + self.rootLayout.addWidget(self.descriptionLabel) + + self.dumpLayout = QHBoxLayout() + self.dumpLayout.setSpacing(10) + self.dumpLayout.setObjectName(u"dumpLayout") + self.useExistingDumpCheck = QCheckBox(self.centralwidget) + self.useExistingDumpCheck.setObjectName(u"useExistingDumpCheck") + + self.dumpLayout.addWidget(self.useExistingDumpCheck) + + self.dumpPathField = QLineEdit(self.centralwidget) + self.dumpPathField.setObjectName(u"dumpPathField") + + self.dumpLayout.addWidget(self.dumpPathField) + + self.browseDumpButton = QPushButton(self.centralwidget) + self.browseDumpButton.setObjectName(u"browseDumpButton") + + self.dumpLayout.addWidget(self.browseDumpButton) + + + self.rootLayout.addLayout(self.dumpLayout) + + self.progressBar = QProgressBar(self.centralwidget) + self.progressBar.setObjectName(u"progressBar") + self.progressBar.setValue(0) + + self.rootLayout.addWidget(self.progressBar) + + self.currentStepLabel = QLabel(self.centralwidget) + self.currentStepLabel.setObjectName(u"currentStepLabel") + self.currentStepLabel.setWordWrap(True) + + self.rootLayout.addWidget(self.currentStepLabel) + self.logEdit = QPlainTextEdit(self.centralwidget) self.logEdit.setObjectName(u"logEdit") self.logEdit.setReadOnly(True) @@ -118,6 +158,11 @@ class Ui_ToolRunnerWindow(object): self.openTerminalButton.setText(QCoreApplication.translate("ToolRunnerWindow", u"Open in terminal", None)) self.hostField.setPlaceholderText(QCoreApplication.translate("ToolRunnerWindow", u"Jibo IP (required for updater)", None)) self.extraArgsField.setPlaceholderText(QCoreApplication.translate("ToolRunnerWindow", u"Extra arguments (optional)", None)) + self.descriptionLabel.setText(QCoreApplication.translate("ToolRunnerWindow", u"Tool description", None)) + self.useExistingDumpCheck.setText(QCoreApplication.translate("ToolRunnerWindow", u"I already have a full eMMC dump (.bin)", None)) + self.dumpPathField.setPlaceholderText(QCoreApplication.translate("ToolRunnerWindow", u"Dump path (passed as --dump-path)", None)) + self.browseDumpButton.setText(QCoreApplication.translate("ToolRunnerWindow", u"Browse\u2026", None)) + self.currentStepLabel.setText(QCoreApplication.translate("ToolRunnerWindow", u"Idle", None)) self.statusLabel.setText(QCoreApplication.translate("ToolRunnerWindow", u"Idle", None)) self.clearLogButton.setText(QCoreApplication.translate("ToolRunnerWindow", u"Clear log", None)) # retranslateUi diff --git a/JiboTools/JiboTools/ui_form.py b/JiboTools/JiboTools/ui_form.py index 8899ea1..47eae42 100644 --- a/JiboTools/JiboTools/ui_form.py +++ b/JiboTools/JiboTools/ui_form.py @@ -17,9 +17,9 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QPalette, QPixmap, QRadialGradient, QTransform) from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFormLayout, QFrame, QGroupBox, QHBoxLayout, QLabel, - QLineEdit, QMainWindow, QPushButton, QScrollArea, - QSizePolicy, QSpacerItem, QStatusBar, QTabWidget, - QVBoxLayout, QWidget) + QLineEdit, QMainWindow, QPlainTextEdit, QPushButton, + QScrollArea, QSizePolicy, QSpacerItem, QSpinBox, + QStatusBar, QTabWidget, QVBoxLayout, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): @@ -98,6 +98,24 @@ class Ui_MainWindow(object): self.configScrollLayout.addWidget(self.groupPreview) + self.groupToolSettings = QGroupBox(self.configScrollContents) + self.groupToolSettings.setObjectName(u"groupToolSettings") + self.formToolSettings = QFormLayout(self.groupToolSettings) + self.formToolSettings.setObjectName(u"formToolSettings") + self.labelEnableLogging = QLabel(self.groupToolSettings) + self.labelEnableLogging.setObjectName(u"labelEnableLogging") + + self.formToolSettings.setWidget(0, QFormLayout.ItemRole.LabelRole, self.labelEnableLogging) + + self.enableLoggingCheck = QCheckBox(self.groupToolSettings) + self.enableLoggingCheck.setObjectName(u"enableLoggingCheck") + self.enableLoggingCheck.setChecked(False) + + self.formToolSettings.setWidget(0, QFormLayout.ItemRole.FieldRole, self.enableLoggingCheck) + + + self.configScrollLayout.addWidget(self.groupToolSettings) + self.groupHomeAssistant = QGroupBox(self.configScrollContents) self.groupHomeAssistant.setObjectName(u"groupHomeAssistant") self.formHomeAssistant = QFormLayout(self.groupHomeAssistant) @@ -166,23 +184,171 @@ class Ui_MainWindow(object): self.aiKeyField = QLineEdit(self.groupAiProvider) self.aiKeyField.setObjectName(u"aiKeyField") - self.aiKeyField.setEchoMode(QLineEdit.EchoMode.Password) self.formAiProvider.setWidget(3, QFormLayout.ItemRole.FieldRole, self.aiKeyField) - self.labelTokens = QLabel(self.groupAiProvider) - self.labelTokens.setObjectName(u"labelTokens") + self.labelAiBridgeRecordSeconds = QLabel(self.groupAiProvider) + self.labelAiBridgeRecordSeconds.setObjectName(u"labelAiBridgeRecordSeconds") - self.formAiProvider.setWidget(4, QFormLayout.ItemRole.LabelRole, self.labelTokens) + self.formAiProvider.setWidget(4, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeRecordSeconds) - self.tokensUsedLabel = QLabel(self.groupAiProvider) - self.tokensUsedLabel.setObjectName(u"tokensUsedLabel") + self.aiBridgeRecordSecondsSpin = QSpinBox(self.groupAiProvider) + self.aiBridgeRecordSecondsSpin.setObjectName(u"aiBridgeRecordSecondsSpin") + self.aiBridgeRecordSecondsSpin.setMinimum(1) + self.aiBridgeRecordSecondsSpin.setMaximum(60) + self.aiBridgeRecordSecondsSpin.setValue(5) - self.formAiProvider.setWidget(4, QFormLayout.ItemRole.FieldRole, self.tokensUsedLabel) + self.formAiProvider.setWidget(4, QFormLayout.ItemRole.FieldRole, self.aiBridgeRecordSecondsSpin) + + self.labelAiBridgeUseAsr = QLabel(self.groupAiProvider) + self.labelAiBridgeUseAsr.setObjectName(u"labelAiBridgeUseAsr") + + self.formAiProvider.setWidget(5, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeUseAsr) + + self.aiBridgeUseAsrServiceSttCheck = QCheckBox(self.groupAiProvider) + self.aiBridgeUseAsrServiceSttCheck.setObjectName(u"aiBridgeUseAsrServiceSttCheck") + self.aiBridgeUseAsrServiceSttCheck.setChecked(True) + + self.formAiProvider.setWidget(5, QFormLayout.ItemRole.FieldRole, self.aiBridgeUseAsrServiceSttCheck) + + self.labelAiBridgeAsrPort = QLabel(self.groupAiProvider) + self.labelAiBridgeAsrPort.setObjectName(u"labelAiBridgeAsrPort") + + self.formAiProvider.setWidget(6, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeAsrPort) + + self.aiBridgeAsrPortSpin = QSpinBox(self.groupAiProvider) + self.aiBridgeAsrPortSpin.setObjectName(u"aiBridgeAsrPortSpin") + self.aiBridgeAsrPortSpin.setMinimum(1) + self.aiBridgeAsrPortSpin.setMaximum(65535) + self.aiBridgeAsrPortSpin.setValue(8088) + + self.formAiProvider.setWidget(6, QFormLayout.ItemRole.FieldRole, self.aiBridgeAsrPortSpin) + + self.labelAiBridgeAsrAudioSource = QLabel(self.groupAiProvider) + self.labelAiBridgeAsrAudioSource.setObjectName(u"labelAiBridgeAsrAudioSource") + + self.formAiProvider.setWidget(7, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeAsrAudioSource) + + self.aiBridgeAsrAudioSourceField = QLineEdit(self.groupAiProvider) + self.aiBridgeAsrAudioSourceField.setObjectName(u"aiBridgeAsrAudioSourceField") + + self.formAiProvider.setWidget(7, QFormLayout.ItemRole.FieldRole, self.aiBridgeAsrAudioSourceField) + + self.labelAiBridgeAsrTimeout = QLabel(self.groupAiProvider) + self.labelAiBridgeAsrTimeout.setObjectName(u"labelAiBridgeAsrTimeout") + + self.formAiProvider.setWidget(8, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeAsrTimeout) + + self.aiBridgeAsrTimeoutSpin = QSpinBox(self.groupAiProvider) + self.aiBridgeAsrTimeoutSpin.setObjectName(u"aiBridgeAsrTimeoutSpin") + self.aiBridgeAsrTimeoutSpin.setMinimum(100) + self.aiBridgeAsrTimeoutSpin.setMaximum(120000) + self.aiBridgeAsrTimeoutSpin.setSingleStep(100) + self.aiBridgeAsrTimeoutSpin.setValue(15000) + + self.formAiProvider.setWidget(8, QFormLayout.ItemRole.FieldRole, self.aiBridgeAsrTimeoutSpin) + + self.labelAiBridgeAsrAutoStart = QLabel(self.groupAiProvider) + self.labelAiBridgeAsrAutoStart.setObjectName(u"labelAiBridgeAsrAutoStart") + + self.formAiProvider.setWidget(9, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeAsrAutoStart) + + self.aiBridgeAsrAutoStartCheck = QCheckBox(self.groupAiProvider) + self.aiBridgeAsrAutoStartCheck.setObjectName(u"aiBridgeAsrAutoStartCheck") + self.aiBridgeAsrAutoStartCheck.setChecked(True) + + self.formAiProvider.setWidget(9, QFormLayout.ItemRole.FieldRole, self.aiBridgeAsrAutoStartCheck) + + self.labelAiBridgeFollowupEnabled = QLabel(self.groupAiProvider) + self.labelAiBridgeFollowupEnabled.setObjectName(u"labelAiBridgeFollowupEnabled") + + self.formAiProvider.setWidget(10, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeFollowupEnabled) + + self.aiBridgeFollowupEnabledCheck = QCheckBox(self.groupAiProvider) + self.aiBridgeFollowupEnabledCheck.setObjectName(u"aiBridgeFollowupEnabledCheck") + self.aiBridgeFollowupEnabledCheck.setChecked(True) + + self.formAiProvider.setWidget(10, QFormLayout.ItemRole.FieldRole, self.aiBridgeFollowupEnabledCheck) + + self.labelAiBridgeFollowupDelay = QLabel(self.groupAiProvider) + self.labelAiBridgeFollowupDelay.setObjectName(u"labelAiBridgeFollowupDelay") + + self.formAiProvider.setWidget(11, QFormLayout.ItemRole.LabelRole, self.labelAiBridgeFollowupDelay) + + self.aiBridgeFollowupDelaySpin = QSpinBox(self.groupAiProvider) + self.aiBridgeFollowupDelaySpin.setObjectName(u"aiBridgeFollowupDelaySpin") + self.aiBridgeFollowupDelaySpin.setMinimum(0) + self.aiBridgeFollowupDelaySpin.setMaximum(60000) + self.aiBridgeFollowupDelaySpin.setSingleStep(50) + self.aiBridgeFollowupDelaySpin.setValue(250) + + self.formAiProvider.setWidget(11, QFormLayout.ItemRole.FieldRole, self.aiBridgeFollowupDelaySpin) + + self.labelAiBridge = QLabel(self.groupAiProvider) + self.labelAiBridge.setObjectName(u"labelAiBridge") + + self.formAiProvider.setWidget(12, QFormLayout.ItemRole.LabelRole, self.labelAiBridge) + + self.editAiBridgeConfigButton = QPushButton(self.groupAiProvider) + self.editAiBridgeConfigButton.setObjectName(u"editAiBridgeConfigButton") + + self.formAiProvider.setWidget(12, QFormLayout.ItemRole.FieldRole, self.editAiBridgeConfigButton) self.configScrollLayout.addWidget(self.groupAiProvider) + self.groupConfigFiles = QGroupBox(self.configScrollContents) + self.groupConfigFiles.setObjectName(u"groupConfigFiles") + self.configFilesLayout = QVBoxLayout(self.groupConfigFiles) + self.configFilesLayout.setSpacing(8) + self.configFilesLayout.setObjectName(u"configFilesLayout") + self.configFilesTopRow = QHBoxLayout() + self.configFilesTopRow.setSpacing(8) + self.configFilesTopRow.setObjectName(u"configFilesTopRow") + self.configFileCombo = QComboBox(self.groupConfigFiles) + self.configFileCombo.setObjectName(u"configFileCombo") + + self.configFilesTopRow.addWidget(self.configFileCombo) + + self.configReadButton = QPushButton(self.groupConfigFiles) + self.configReadButton.setObjectName(u"configReadButton") + + self.configFilesTopRow.addWidget(self.configReadButton) + + self.configWriteButton = QPushButton(self.groupConfigFiles) + self.configWriteButton.setObjectName(u"configWriteButton") + self.configWriteButton.setEnabled(False) + + self.configFilesTopRow.addWidget(self.configWriteButton) + + + self.configFilesLayout.addLayout(self.configFilesTopRow) + + self.configFileStatusLabel = QLabel(self.groupConfigFiles) + self.configFileStatusLabel.setObjectName(u"configFileStatusLabel") + self.configFileStatusLabel.setWordWrap(True) + + self.configFilesLayout.addWidget(self.configFileStatusLabel) + + self.configEditor = QPlainTextEdit(self.groupConfigFiles) + self.configEditor.setObjectName(u"configEditor") + + self.configFilesLayout.addWidget(self.configEditor) + + self.configLogLabel = QLabel(self.groupConfigFiles) + self.configLogLabel.setObjectName(u"configLogLabel") + + self.configFilesLayout.addWidget(self.configLogLabel) + + self.configActivityLog = QPlainTextEdit(self.groupConfigFiles) + self.configActivityLog.setObjectName(u"configActivityLog") + self.configActivityLog.setReadOnly(True) + + self.configFilesLayout.addWidget(self.configActivityLog) + + + self.configScrollLayout.addWidget(self.groupConfigFiles) + self.configBottomSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) self.configScrollLayout.addItem(self.configBottomSpacer) @@ -401,20 +567,41 @@ class Ui_MainWindow(object): self.overrideCheck.setText("") self.labelPreviewConnected.setText(QCoreApplication.translate("MainWindow", u"Connected", None)) self.previewConnectedCheck.setText("") + self.groupToolSettings.setTitle(QCoreApplication.translate("MainWindow", u"Tool Settings", None)) + self.labelEnableLogging.setText(QCoreApplication.translate("MainWindow", u"Enable logging", None)) + self.enableLoggingCheck.setText("") self.groupHomeAssistant.setTitle(QCoreApplication.translate("MainWindow", u"Home Assistant", None)) self.labelHaEnable.setText(QCoreApplication.translate("MainWindow", u"Enabled", None)) self.haEnableCheck.setText("") self.labelHaServerIp.setText(QCoreApplication.translate("MainWindow", u"Server IP", None)) self.haServerIpField.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Home Assistant host", None)) - self.groupAiProvider.setTitle(QCoreApplication.translate("MainWindow", u"AI Provider", None)) + self.groupAiProvider.setTitle(QCoreApplication.translate("MainWindow", u"AI Bridge", None)) self.labelAiEnable.setText(QCoreApplication.translate("MainWindow", u"Enabled", None)) self.aiEnableCheck.setText("") - self.labelAiProvider.setText(QCoreApplication.translate("MainWindow", u"Provider", None)) - self.labelAiEndpoint.setText(QCoreApplication.translate("MainWindow", u"API endpoint", None)) + self.labelAiProvider.setText(QCoreApplication.translate("MainWindow", u"Mode", None)) + self.labelAiEndpoint.setText(QCoreApplication.translate("MainWindow", u"Server base URL", None)) self.aiEndpointField.setPlaceholderText(QCoreApplication.translate("MainWindow", u"http://...", None)) - self.labelAiKey.setText(QCoreApplication.translate("MainWindow", u"API key", None)) - self.labelTokens.setText(QCoreApplication.translate("MainWindow", u"Tokens used", None)) - self.tokensUsedLabel.setText(QCoreApplication.translate("MainWindow", u"-1", None)) + self.labelAiKey.setText(QCoreApplication.translate("MainWindow", u"ASR host", None)) + self.aiKeyField.setPlaceholderText(QCoreApplication.translate("MainWindow", u"127.0.0.1", None)) + self.labelAiBridgeRecordSeconds.setText(QCoreApplication.translate("MainWindow", u"Record seconds", None)) + self.labelAiBridgeUseAsr.setText(QCoreApplication.translate("MainWindow", u"Use ASR service STT", None)) + self.aiBridgeUseAsrServiceSttCheck.setText("") + self.labelAiBridgeAsrPort.setText(QCoreApplication.translate("MainWindow", u"ASR port", None)) + self.labelAiBridgeAsrAudioSource.setText(QCoreApplication.translate("MainWindow", u"ASR audio source", None)) + self.aiBridgeAsrAudioSourceField.setPlaceholderText(QCoreApplication.translate("MainWindow", u"alsa1", None)) + self.labelAiBridgeAsrTimeout.setText(QCoreApplication.translate("MainWindow", u"ASR timeout (ms)", None)) + self.labelAiBridgeAsrAutoStart.setText(QCoreApplication.translate("MainWindow", u"ASR auto start", None)) + self.aiBridgeAsrAutoStartCheck.setText("") + self.labelAiBridgeFollowupEnabled.setText(QCoreApplication.translate("MainWindow", u"Followup enabled", None)) + self.aiBridgeFollowupEnabledCheck.setText("") + self.labelAiBridgeFollowupDelay.setText(QCoreApplication.translate("MainWindow", u"Followup delay (ms)", None)) + self.labelAiBridge.setText(QCoreApplication.translate("MainWindow", u"Advanced", None)) + self.editAiBridgeConfigButton.setText(QCoreApplication.translate("MainWindow", u"Edit AI Bridge Config", None)) + self.groupConfigFiles.setTitle(QCoreApplication.translate("MainWindow", u"Config Files", None)) + self.configReadButton.setText(QCoreApplication.translate("MainWindow", u"Read", None)) + self.configWriteButton.setText(QCoreApplication.translate("MainWindow", u"Write", None)) + self.configFileStatusLabel.setText(QCoreApplication.translate("MainWindow", u"Select a config to view/edit", None)) + self.configLogLabel.setText(QCoreApplication.translate("MainWindow", u"Activity log", None)) self.TryToConnect.setText(QCoreApplication.translate("MainWindow", u"Connect", None)) self.JiboIpField.setInputMask("") self.JiboIpField.setText("") diff --git a/README.md b/README.md index b4ce3cb..3fd5d92 100644 --- a/README.md +++ b/README.md @@ -285,6 +285,130 @@ JiboAutoMod/ - devsparx for the T124 port - The Jibo preservation community -## License +CLI Arguments +This page documents the CLI flags for the two main tools: -This tool is provided as-is for educational and preservation purposes. See individual component licenses in the Shofel directory. +../jibo_automod.py (installer/mod tool) +../jibo_updater.py (OS updater) +If you’re using launchers (.sh/.bat), they forward all arguments through. + +jibo_automod.py +Modes (mutually exclusive) +(no mode flag) + +Full mod workflow (full eMMC dump, extract/modify/write /var). +--dump-only + +Only dump eMMC; don’t modify anything. +--write-partition FILE + +Write an already-prepared partition image to eMMC. +You must tell it where to write using --start-sector. +--mode-json-only + +Fast path: +read GPT (small) +read /var only (~500MB) +modify /var/jibo/mode.json +write back either a patch (default) or full /var +Common options +--dump-path FILE + +Use an existing dump file instead of reading from the device. +--output FILE / -o FILE + +Output file for dumps. +--start-sector HEX + +Start sector for --write-partition. +Parsed with base autodetect (0x... works). +Default is 0x7E9022 (but the full/fast workflows usually compute the start sector from GPT). +--force-dump + +Re-dump even if a dump exists. +--rebuild-shofel + +Force rebuilding ShofEL (make clean then make). +--skip-detection + +Skip USB “is Jibo connected” checks. +--no-verify + +Skip verification read-back. +Fast mode options +--full-var-write +Only meaningful with --mode-json-only. +If set: write the full /var partition back (slower). +If not set: compute sector diffs and only write changed ranges (faster). +Examples +Full mod: + +python3 jibo_automod.py +Dump only: + +python3 jibo_automod.py --dump-only -o my_dump.bin +Use existing dump: + +python3 jibo_automod.py --dump-path jibo_work/jibo_full_dump.bin +Fast mode: + +python3 jibo_automod.py --mode-json-only +Write a prepared partition: + +python3 jibo_automod.py --write-partition var_partition.bin --start-sector 0x7E9022 +jibo_updater.py +The updater assumes you already have SSH access to the robot. + +Required +--ip (alias: --host) +IP or hostname of your Jibo. +Connection +--user (default root) +--password (default jibo) +--ssh-timeout (default 15) +Release selection +--releases-api + +API endpoint for Gitea releases. +--stable + +Ignore prereleases. +--tag + +Install a specific tag instead of “latest”. +Archive layout +--build-path +If the updater can’t find the build/ folder automatically, specify where it is inside the extracted archive. +Safety / UX +--state-file + +Where it remembers the last applied version per host. +--force + +Re-download and re-install even if the local state says you’re already on that version. +--yes + +Don’t prompt for confirmation. +--dry-run + +Download/extract + connect, but don’t upload files and don’t touch mode.json. +Returning to normal mode +--return-normal + +After update, set /var/jibo/mode.json back to normal (no prompt). +--no-return-normal + +Never prompt and never change mode back. +Examples +Update to latest: + +python3 jibo_updater.py --ip 192.168.1.50 +Stable only: + +python3 jibo_updater.py --ip 192.168.1.50 --stable +Specific tag: + +python3 jibo_updater.py --ip 192.168.1.50 --tag v3.3.0 +Dry run: + +python3 jibo_updater.py --ip 192.168.1.50 --dry-run diff --git a/jibo_work/_t1.bin b/jibo_work/_t1.bin deleted file mode 100644 index 38dd1b3..0000000 --- a/jibo_work/_t1.bin +++ /dev/null @@ -1 +0,0 @@ -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/jibo_work/_t2.bin b/jibo_work/_t2.bin deleted file mode 100644 index e2e5607..0000000 --- a/jibo_work/_t2.bin +++ /dev/null @@ -1 +0,0 @@ -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/jibo_work/update_state.json b/jibo_work/update_state.json deleted file mode 100644 index 71d8223..0000000 --- a/jibo_work/update_state.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "192.168.1.15": "v3.3.0" -}