Compare commits
23 Commits
v3.3.0
...
7af2a8a7e0
| Author | SHA1 | Date | |
|---|---|---|---|
|
7af2a8a7e0
|
|||
|
b5abe340c8
|
|||
| 52de443263 | |||
| 73f954ee62 | |||
| 46bc2eba85 | |||
| 297d6f036a | |||
| d277c2c279 | |||
| 12959cb763 | |||
| 3e0e486497 | |||
| 65e435d544 | |||
| 3909d506e2 | |||
| a96ae91dd4 | |||
|
268cee305e
|
|||
|
216bb1586e
|
|||
|
9eb2681de6
|
|||
|
ba50c0fc08
|
|||
| 6742fd1ca9 | |||
| 0d00cfb4b9 | |||
| a5df74f77b | |||
|
5c706a13b4
|
|||
|
7c581a8b36
|
|||
| 32cb6b1ae7 | |||
| 98d5ae4cc1 |
19
README.md
19
README.md
@@ -1,10 +1,13 @@
|
||||
# JiboOs
|
||||
- - -
|
||||
# Jibo Os - openJiboOs
|
||||
- - -
|
||||
Artwork by : Pou@Our discord
|
||||
|
||||
- - -
|
||||
|
||||
# Release Version 3.3.0 InDev
|
||||
|
||||
Chagelog.....
|
||||
|
||||
you can make custom menu buttons!
|
||||

|
||||
|
||||
- - -
|
||||
|
||||
open-jibOS is a open source version of the jibo OS ,
|
||||
this repository contains the source for jibos OS , please not this is NOT the full os image dump but instead a collection of only the modified directories that is used by a helper application over at https://kevinblog.sytes.net/Code/Kevin/JiboAutoMod to help you manage and install updates!
|
||||
|
||||
- - -
|
||||
|
||||
46
V3.1/build/ai_bridge_server/README.md
Normal file
46
V3.1/build/ai_bridge_server/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Jibo AI Bridge Server
|
||||
|
||||
This is a small companion server you run on your PC (same machine as Ollama).
|
||||
It gives the robot a stable HTTP target and keeps the on-robot code modular.
|
||||
|
||||
## Endpoints
|
||||
|
||||
- `POST /v1/chat/text` JSON: `{ "text": "..." }` → `{ "reply": "..." }`
|
||||
- `POST /v1/chat/audio` JSON: `{ "wav_base64": "..." }` → `{ "reply": "...", "text": "<transcript>" }`
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.9+
|
||||
- Ollama running locally
|
||||
- default Ollama chat URL: `http://127.0.0.1:11434/api/chat`
|
||||
|
||||
Optional (for AUDIO mode):
|
||||
- `faster-whisper` + `ffmpeg`
|
||||
|
||||
## Run
|
||||
|
||||
From this folder:
|
||||
|
||||
- `python3 server.py --host 0.0.0.0 --port 8020`
|
||||
|
||||
Environment variables (optional):
|
||||
|
||||
- `OLLAMA_MODEL` (default `phi3.5`)
|
||||
- `OLLAMA_URL` (default `http://127.0.0.1:11434/api/chat`)
|
||||
- `WHISPER_MODEL` (default `base`)
|
||||
|
||||
Note: Ollama can stay bound to `127.0.0.1:11434` on your PC; the robot only talks to this bridge server (`:8020`).
|
||||
|
||||
Install optional STT deps:
|
||||
|
||||
- `pip install faster-whisper`
|
||||
- install `ffmpeg` (platform-specific)
|
||||
|
||||
## Robot configuration
|
||||
|
||||
Open the tunables UI (`http://<robot-ip>:3333`) and set:
|
||||
|
||||
- **Jibo AI Bridge → Server URL**: `http://<your-pc-ip>:8020`
|
||||
- **Jibo AI Bridge → Input**:
|
||||
- `AUDIO` (records a short WAV clip on the robot and sends it)
|
||||
- `TEXT` (uses `globalTurnResult` ASR text if available)
|
||||
BIN
V3.1/build/ai_bridge_server/__pycache__/server.cpython-313.pyc
Normal file
BIN
V3.1/build/ai_bridge_server/__pycache__/server.cpython-313.pyc
Normal file
Binary file not shown.
BIN
V3.1/build/ai_bridge_server/jibo_last.wav
Normal file
BIN
V3.1/build/ai_bridge_server/jibo_last.wav
Normal file
Binary file not shown.
383
V3.1/build/ai_bridge_server/server.py
Normal file
383
V3.1/build/ai_bridge_server/server.py
Normal file
@@ -0,0 +1,383 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Minimal AI Bridge server for Jibo.
|
||||
|
||||
Endpoints:
|
||||
- POST /v1/chat/text {"text": "..."} -> {"reply": "..."}
|
||||
- POST /v1/chat/audio {"wav_base64": "...", "sample_rate": 16000} -> {"reply": "...", "text": "<transcript>"}
|
||||
|
||||
LLM:
|
||||
- Uses Ollama Chat API by default: http://localhost:11434/api/chat
|
||||
Env:
|
||||
OLLAMA_URL (default: http://127.0.0.1:11434/api/chat)
|
||||
OLLAMA_MODEL (default: phi3.5)
|
||||
|
||||
STT (optional, for /audio):
|
||||
- If `faster-whisper` is installed, it will be used.
|
||||
Env:
|
||||
WHISPER_MODEL (default: base)
|
||||
|
||||
Run:
|
||||
python3 server.py --host 0.0.0.0 --port 8020
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import array
|
||||
import base64
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
import tempfile
|
||||
import time
|
||||
import traceback
|
||||
import wave
|
||||
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
||||
from urllib.error import URLError
|
||||
from urllib.request import Request, urlopen
|
||||
|
||||
|
||||
def _ts() -> str:
|
||||
# ISO-ish timestamp in local time; good enough for debugging
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
|
||||
def _log(msg: str):
|
||||
# Server previously muted logs; we want visibility while debugging.
|
||||
print(f"[{_ts()}] {msg}", flush=True)
|
||||
|
||||
|
||||
def _json_response(handler: BaseHTTPRequestHandler, status: int, payload: dict):
|
||||
body = json.dumps(payload).encode("utf-8")
|
||||
handler.send_response(status)
|
||||
handler.send_header("Content-Type", "application/json")
|
||||
handler.send_header("Content-Length", str(len(body)))
|
||||
handler.end_headers()
|
||||
handler.wfile.write(body)
|
||||
|
||||
|
||||
def _read_json(handler: BaseHTTPRequestHandler) -> dict:
|
||||
length = int(handler.headers.get("Content-Length", "0"))
|
||||
raw = handler.rfile.read(length) if length else b"{}"
|
||||
return json.loads(raw.decode("utf-8"))
|
||||
|
||||
|
||||
def _ollama_chat(user_text: str) -> str:
|
||||
ollama_url = os.environ.get("OLLAMA_URL", "http://127.0.0.1:11434/api/chat")
|
||||
model = os.environ.get("OLLAMA_MODEL", "phi3.5")
|
||||
|
||||
req_body = {
|
||||
"model": model,
|
||||
"stream": False,
|
||||
"messages": [
|
||||
{"role": "system", "content": "You are Jibo, a friendly home robot. Keep replies short and spoken."},
|
||||
{"role": "user", "content": user_text},
|
||||
],
|
||||
}
|
||||
|
||||
req = Request(
|
||||
ollama_url,
|
||||
data=json.dumps(req_body).encode("utf-8"),
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
|
||||
try:
|
||||
with urlopen(req, timeout=60) as resp:
|
||||
data = json.loads(resp.read().decode("utf-8"))
|
||||
except Exception as e:
|
||||
# Let caller decide how to respond; include a useful hint in logs.
|
||||
_log(f"Ollama request failed url={ollama_url!r} err={e!r}")
|
||||
raise
|
||||
|
||||
msg = data.get("message") or {}
|
||||
content = msg.get("content")
|
||||
if not content:
|
||||
raise RuntimeError(f"Unexpected Ollama response: {data}")
|
||||
return content.strip()
|
||||
|
||||
|
||||
def _short_err(e: BaseException) -> str:
|
||||
s = str(e) or e.__class__.__name__
|
||||
s = " ".join(s.split())
|
||||
if len(s) > 240:
|
||||
s = s[:240] + "..."
|
||||
return s
|
||||
|
||||
|
||||
def _ollama_down_reply() -> str:
|
||||
# Keep it short and speakable.
|
||||
return "My AI server isn't reachable right now. Please start Ollama on the computer, then try again."
|
||||
|
||||
|
||||
def _wav_diagnostics(wav_bytes: bytes) -> dict:
|
||||
"""Best-effort WAV parsing + signal stats for debugging mic capture."""
|
||||
info: dict = {"bytes": len(wav_bytes)}
|
||||
try:
|
||||
with wave.open(io.BytesIO(wav_bytes), "rb") as wf: # type: ignore[name-defined]
|
||||
nch = wf.getnchannels()
|
||||
sw = wf.getsampwidth()
|
||||
fr = wf.getframerate()
|
||||
nframes = wf.getnframes()
|
||||
info.update({"channels": nch, "sample_width": sw, "frame_rate": fr, "frames": nframes})
|
||||
|
||||
# Read up to ~3 seconds of audio for stats (avoid huge CPU)
|
||||
max_frames = min(nframes, fr * 3)
|
||||
frames = wf.readframes(max_frames)
|
||||
except Exception as e:
|
||||
info["parse_error"] = str(e)
|
||||
return info
|
||||
|
||||
# Only compute stats for 16-bit PCM (most common).
|
||||
if info.get("sample_width") != 2:
|
||||
return info
|
||||
|
||||
try:
|
||||
samples = array.array("h")
|
||||
samples.frombytes(frames)
|
||||
if not samples:
|
||||
return info
|
||||
|
||||
mn = min(samples)
|
||||
mx = max(samples)
|
||||
zeros = sum(1 for s in samples if s == 0)
|
||||
# RMS over interleaved samples (good enough for quick signal presence)
|
||||
n = float(len(samples))
|
||||
rms = (sum(float(s) * float(s) for s in samples) / n) ** 0.5
|
||||
# Per-channel RMS (helps debug mic arrays)
|
||||
ch = int(info.get("channels") or 1)
|
||||
channel_rms = None
|
||||
if ch > 1:
|
||||
channel_rms = []
|
||||
for c in range(ch):
|
||||
chan = samples[c::ch]
|
||||
if not chan:
|
||||
channel_rms.append(0.0)
|
||||
else:
|
||||
nn = float(len(chan))
|
||||
channel_rms.append((sum(float(s) * float(s) for s in chan) / nn) ** 0.5)
|
||||
info.update(
|
||||
{
|
||||
"min": int(mn),
|
||||
"max": int(mx),
|
||||
"rms": float(rms),
|
||||
"zero_frac": float(zeros) / n,
|
||||
"channel_rms": channel_rms,
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
info["stats_error"] = str(e)
|
||||
return info
|
||||
|
||||
|
||||
def _to_loudest_channel_mono_wav(wav_bytes: bytes) -> tuple[bytes, dict]:
|
||||
"""If WAV is multi-channel 16-bit PCM, pick loudest channel and return mono WAV bytes."""
|
||||
try:
|
||||
with wave.open(io.BytesIO(wav_bytes), "rb") as wf:
|
||||
nch = wf.getnchannels()
|
||||
sw = wf.getsampwidth()
|
||||
fr = wf.getframerate()
|
||||
nframes = wf.getnframes()
|
||||
frames = wf.readframes(nframes)
|
||||
except Exception as e:
|
||||
return wav_bytes, {"convert_error": str(e)}
|
||||
|
||||
if nch <= 1 or sw != 2:
|
||||
return wav_bytes, {"converted": False, "channels": nch, "sample_width": sw}
|
||||
|
||||
samples = array.array("h")
|
||||
samples.frombytes(frames)
|
||||
if not samples:
|
||||
return wav_bytes, {"converted": False, "reason": "empty_samples"}
|
||||
|
||||
# Choose loudest channel by RMS
|
||||
rms_list: list[float] = []
|
||||
for c in range(nch):
|
||||
chan = samples[c::nch]
|
||||
if not chan:
|
||||
rms_list.append(0.0)
|
||||
else:
|
||||
nn = float(len(chan))
|
||||
rms_list.append((sum(float(s) * float(s) for s in chan) / nn) ** 0.5)
|
||||
best = max(range(nch), key=lambda i: rms_list[i])
|
||||
mono = samples[best::nch]
|
||||
|
||||
out = io.BytesIO()
|
||||
with wave.open(out, "wb") as ow:
|
||||
ow.setnchannels(1)
|
||||
ow.setsampwidth(2)
|
||||
ow.setframerate(fr)
|
||||
ow.writeframes(mono.tobytes())
|
||||
|
||||
return out.getvalue(), {"converted": True, "picked_channel": best, "channel_rms": rms_list, "frame_rate": fr}
|
||||
|
||||
|
||||
class _Whisper:
|
||||
def __init__(self):
|
||||
self._model = None
|
||||
|
||||
def available(self) -> bool:
|
||||
try:
|
||||
import faster_whisper # noqa: F401
|
||||
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def transcribe_wav_bytes(self, wav_bytes: bytes) -> str:
|
||||
try:
|
||||
from faster_whisper import WhisperModel
|
||||
except Exception as e:
|
||||
raise RuntimeError(
|
||||
"Audio mode requires `faster-whisper` (pip install faster-whisper) and ffmpeg on your PC"
|
||||
) from e
|
||||
|
||||
model_name = os.environ.get("WHISPER_MODEL", "base")
|
||||
if self._model is None:
|
||||
# CPU-friendly default; user can override via WHISPER_MODEL and faster-whisper params if needed.
|
||||
self._model = WhisperModel(model_name, device="cpu", compute_type="int8")
|
||||
|
||||
with tempfile.NamedTemporaryFile(suffix=".wav", delete=True) as f:
|
||||
f.write(wav_bytes)
|
||||
f.flush()
|
||||
segments, info = self._model.transcribe(f.name)
|
||||
text = "".join(seg.text for seg in segments).strip()
|
||||
return text
|
||||
|
||||
|
||||
_whisper = _Whisper()
|
||||
|
||||
|
||||
class Handler(BaseHTTPRequestHandler):
|
||||
server_version = "JiboAIBridge/1.0"
|
||||
|
||||
def do_POST(self):
|
||||
try:
|
||||
client = f"{self.client_address[0]}:{self.client_address[1]}"
|
||||
length = int(self.headers.get("Content-Length", "0") or "0")
|
||||
_log(f"{client} POST {self.path} len={length}")
|
||||
|
||||
if self.path == "/v1/chat/text":
|
||||
payload = _read_json(self)
|
||||
text = (payload.get("text") or "").strip()
|
||||
if not text:
|
||||
_json_response(self, 400, {"error": "Missing 'text'"})
|
||||
return
|
||||
_log(f"{client} /text prompt_chars={len(text)} prompt={text[:200]!r}")
|
||||
try:
|
||||
reply = _ollama_chat(text)
|
||||
_log(f"{client} /text ok reply_chars={len(reply)}")
|
||||
_json_response(self, 200, {"reply": reply})
|
||||
except URLError as e:
|
||||
_log(f"{client} /text ollama_unreachable err={_short_err(e)!r}")
|
||||
_json_response(self, 200, {"reply": _ollama_down_reply(), "ollama_ok": False, "ollama_error": _short_err(e)})
|
||||
except ConnectionRefusedError as e:
|
||||
_log(f"{client} /text ollama_refused err={_short_err(e)!r}")
|
||||
_json_response(self, 200, {"reply": _ollama_down_reply(), "ollama_ok": False, "ollama_error": _short_err(e)})
|
||||
return
|
||||
|
||||
if self.path == "/v1/chat/audio":
|
||||
payload = _read_json(self)
|
||||
b64 = payload.get("wav_base64")
|
||||
if not b64:
|
||||
_json_response(self, 400, {"error": "Missing 'wav_base64'"})
|
||||
return
|
||||
|
||||
if not _whisper.available():
|
||||
_log(f"{client} /audio STT unavailable (faster-whisper not installed)")
|
||||
_json_response(
|
||||
self,
|
||||
503,
|
||||
{
|
||||
"error": "STT unavailable: install faster-whisper and ffmpeg on this PC",
|
||||
"hint": "pip install faster-whisper (and install ffmpeg)",
|
||||
},
|
||||
)
|
||||
return
|
||||
|
||||
wav_bytes = base64.b64decode(b64)
|
||||
diag = _wav_diagnostics(wav_bytes)
|
||||
wav_for_stt, conv = _to_loudest_channel_mono_wav(wav_bytes)
|
||||
if conv.get("converted"):
|
||||
diag_mono = _wav_diagnostics(wav_for_stt)
|
||||
_log(
|
||||
f"{client} /audio wav_diag={json.dumps(diag, sort_keys=True)} "
|
||||
f"mono={json.dumps(diag_mono, sort_keys=True)} conv={json.dumps(conv, sort_keys=True)}"
|
||||
)
|
||||
else:
|
||||
_log(f"{client} /audio wav_diag={json.dumps(diag, sort_keys=True)} conv={json.dumps(conv, sort_keys=True)}")
|
||||
try:
|
||||
# Save for debugging (overwrite each time)
|
||||
out_path = os.environ.get("AI_BRIDGE_LAST_WAV", "jibo_last.wav")
|
||||
with open(out_path, "wb") as f:
|
||||
f.write(wav_bytes)
|
||||
_log(f"{client} /audio decoded bytes={len(wav_bytes)} saved={out_path}")
|
||||
except Exception as e:
|
||||
_log(f"{client} /audio failed saving wav: {e}")
|
||||
|
||||
transcript = _whisper.transcribe_wav_bytes(wav_for_stt)
|
||||
if not transcript:
|
||||
_log(f"{client} /audio empty transcript")
|
||||
_json_response(self, 200, {"reply": "I didn't catch that. Could you say it again?", "text": ""})
|
||||
return
|
||||
_log(f"{client} /audio transcript_chars={len(transcript)} transcript={transcript[:200]!r}")
|
||||
try:
|
||||
reply = _ollama_chat(transcript)
|
||||
_log(f"{client} /audio ok text_chars={len(transcript)} reply_chars={len(reply)}")
|
||||
_json_response(self, 200, {"reply": reply, "text": transcript})
|
||||
except URLError as e:
|
||||
_log(f"{client} /audio ollama_unreachable err={_short_err(e)!r}")
|
||||
_json_response(
|
||||
self,
|
||||
200,
|
||||
{"reply": _ollama_down_reply(), "text": transcript, "ollama_ok": False, "ollama_error": _short_err(e)},
|
||||
)
|
||||
except ConnectionRefusedError as e:
|
||||
_log(f"{client} /audio ollama_refused err={_short_err(e)!r}")
|
||||
_json_response(
|
||||
self,
|
||||
200,
|
||||
{"reply": _ollama_down_reply(), "text": transcript, "ollama_ok": False, "ollama_error": _short_err(e)},
|
||||
)
|
||||
return
|
||||
|
||||
_json_response(self, 404, {"error": "Not found"})
|
||||
|
||||
except Exception as e:
|
||||
_log(f"ERROR {self.path}: {e}\n{traceback.format_exc()}")
|
||||
_json_response(
|
||||
self,
|
||||
500,
|
||||
{
|
||||
"error": str(e),
|
||||
"trace": traceback.format_exc(),
|
||||
},
|
||||
)
|
||||
|
||||
def log_message(self, format, *args):
|
||||
# Keep BaseHTTPRequestHandler from double-logging; we do our own.
|
||||
return
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--host", default="0.0.0.0")
|
||||
ap.add_argument("--port", type=int, default=8020)
|
||||
args = ap.parse_args()
|
||||
|
||||
server = ThreadingHTTPServer((args.host, args.port), Handler)
|
||||
_log(f"AI Bridge server listening on http://{args.host}:{args.port}")
|
||||
_log(
|
||||
"Ollama: "
|
||||
+ os.environ.get("OLLAMA_URL", "http://127.0.0.1:11434/api/chat")
|
||||
+ " model="
|
||||
+ os.environ.get("OLLAMA_MODEL", "phi3.5")
|
||||
)
|
||||
_log("Ollama health check: curl -s http://127.0.0.1:11434/api/tags | head")
|
||||
if not _whisper.available():
|
||||
_log("STT: faster-whisper not installed; /v1/chat/audio will return 503")
|
||||
server.serve_forever()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"mode": "TEXT",
|
||||
"serverBaseUrl": "http://192.168.1.28:8020",
|
||||
|
||||
"recordSeconds": 5,
|
||||
"useDumpStateAudio": true,
|
||||
|
||||
"useAsrServiceStt": true,
|
||||
"asrServiceHost": "127.0.0.1",
|
||||
"asrServicePort": 8088,
|
||||
"asrAudioSourceId": "alsa1",
|
||||
"asrTimeoutMs": 15000,
|
||||
"asrServiceDebugWs": false,
|
||||
"asrAutoStart": true,
|
||||
|
||||
"wakeupChitchatPhrases": [
|
||||
"hello",
|
||||
"howdy",
|
||||
"hi",
|
||||
"hey",
|
||||
"look what i found",
|
||||
"nice to see you",
|
||||
"good morning",
|
||||
"good afternoon",
|
||||
"good evening"
|
||||
],
|
||||
|
||||
"followupEnabled": true,
|
||||
"followupDelayMs": 250
|
||||
}
|
||||
2547
V3.1/build/opt/jibo/Jibo/Skills/@be/be/be/ai-bridge.js
Normal file
2547
V3.1/build/opt/jibo/Jibo/Skills/@be/be/be/ai-bridge.js
Normal file
File diff suppressed because it is too large
Load Diff
157
V3.1/build/opt/jibo/Jibo/Skills/@be/be/be/dynamic-skills.js
Normal file
157
V3.1/build/opt/jibo/Jibo/Skills/@be/be/be/dynamic-skills.js
Normal file
@@ -0,0 +1,157 @@
|
||||
"use strict";
|
||||
|
||||
// Dynamically load skills after BE startup.
|
||||
// This avoids needing to rebuild the big BE bundle when adding new skills on disk.
|
||||
|
||||
const path = require("path");
|
||||
const jibo = require("jibo");
|
||||
|
||||
let rlog = null;
|
||||
try {
|
||||
rlog = require("./robot-logger");
|
||||
} catch (e) {
|
||||
rlog = null;
|
||||
}
|
||||
|
||||
function log(msg, data) {
|
||||
const line = "[DYN-SKILLS] " + msg;
|
||||
try {
|
||||
console.log(line, data || "");
|
||||
} catch (e) {}
|
||||
try {
|
||||
if (rlog && typeof rlog.raw === "function") rlog.raw(line + (data ? " " + JSON.stringify(data) : ""));
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function normalizeSkillExport(SkillExport, id) {
|
||||
if (typeof SkillExport === "function") return SkillExport;
|
||||
if (SkillExport && typeof SkillExport.Skill === "function") return SkillExport.Skill;
|
||||
throw new Error("Error loading skill: " + id + ". Incorrect exports");
|
||||
}
|
||||
|
||||
function attachLifecycleHooks(be, id, skill) {
|
||||
// Mirror the hooks the Be constructor normally installs.
|
||||
try {
|
||||
skill.on("exit", function () {
|
||||
be.exit.call(be, skill, ...arguments);
|
||||
});
|
||||
skill.on("redirect", function () {
|
||||
be.skillRedirect.call(be, skill, ...arguments);
|
||||
});
|
||||
skill.on("refresh", function () {
|
||||
be.skillRedirect.call(be, skill, skill.assetPack, ...arguments);
|
||||
});
|
||||
} catch (e) {
|
||||
log("failed to attach lifecycle hooks", { id: id, err: String(e && (e.stack || e.message || e)) });
|
||||
}
|
||||
|
||||
const empty = (done) => {
|
||||
try {
|
||||
done();
|
||||
} catch (e) {}
|
||||
};
|
||||
|
||||
try {
|
||||
if (!skill.postInit) skill.postInit = empty;
|
||||
if (!skill.preload) skill.preload = empty;
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function tryLoadSkill(be, id) {
|
||||
if (!be || !be.skills) throw new Error("be.skills missing");
|
||||
if (!id || typeof id !== "string") return false;
|
||||
|
||||
if (be.skills[id]) return true;
|
||||
|
||||
// eslint-disable-next-line global-require, import/no-dynamic-require
|
||||
const SkillExport = require(id);
|
||||
const Skill = normalizeSkillExport(SkillExport, id);
|
||||
|
||||
const rootPath = path.dirname(jibo.utils.PathUtils.resolve(id));
|
||||
const skill = new Skill({ assetPack: id, rootPath: rootPath });
|
||||
|
||||
if (typeof be._validateSkill === "function" && !be._validateSkill(skill)) {
|
||||
throw new Error("not a valid BeSkill");
|
||||
}
|
||||
|
||||
be.skills[id] = skill;
|
||||
attachLifecycleHooks(be, id, skill);
|
||||
|
||||
log("loaded", { id: id });
|
||||
return true;
|
||||
}
|
||||
|
||||
function collectSkillIdsFromMenuEntries(entries) {
|
||||
const ids = new Set();
|
||||
|
||||
(entries || []).forEach(function (e) {
|
||||
if (!e) return;
|
||||
|
||||
if (e.type === "skill" && e.skillId) ids.add(e.skillId);
|
||||
|
||||
if (e.type === "submenu" && Array.isArray(e.children)) {
|
||||
e.children.forEach(function (c) {
|
||||
if (c && c.type === "skill" && c.skillId) ids.add(c.skillId);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return Array.from(ids);
|
||||
}
|
||||
|
||||
function loadMissingSkillsFromMenuEntries(be, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
let menuEntries = null;
|
||||
try {
|
||||
// Note: this is the modular path (includes provider entries).
|
||||
menuEntries = require("../menu/menu-entries");
|
||||
} catch (e) {
|
||||
log("menu-entries module missing", { err: String(e && (e.stack || e.message || e)) });
|
||||
return { loaded: [], failed: [] };
|
||||
}
|
||||
|
||||
let res;
|
||||
try {
|
||||
res = menuEntries.getMenuEntries({
|
||||
skillsRoot: opts.skillsRoot,
|
||||
providersDir: opts.providersDir,
|
||||
log: function () {
|
||||
try {
|
||||
log(Array.prototype.join.call(arguments, " "));
|
||||
} catch (e) {}
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
log("getMenuEntries failed", { err: String(e && (e.stack || e.message || e)) });
|
||||
return { loaded: [], failed: [] };
|
||||
}
|
||||
|
||||
const ids = collectSkillIdsFromMenuEntries(res && res.entries);
|
||||
log("menu referenced skillIds", { count: ids.length });
|
||||
|
||||
const loaded = [];
|
||||
const failed = [];
|
||||
|
||||
ids.forEach(function (id) {
|
||||
try {
|
||||
// Only attempt ids that look like NPM packages (reduces noise).
|
||||
if (typeof id !== "string") return;
|
||||
if (id.indexOf("/") === -1) return;
|
||||
|
||||
if (!be.skills[id]) {
|
||||
tryLoadSkill(be, id);
|
||||
loaded.push(id);
|
||||
}
|
||||
} catch (e) {
|
||||
failed.push({ id: id, err: String(e && (e.stack || e.message || e)) });
|
||||
log("load failed", { id: id, err: String(e && (e.message || e)) });
|
||||
}
|
||||
});
|
||||
|
||||
return { loaded: loaded, failed: failed, providersDir: res && res.providersDir, skillsRoot: res && res.skillsRoot };
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
loadMissingSkillsFromMenuEntries: loadMissingSkillsFromMenuEntries
|
||||
};
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"webCore" : {
|
||||
"serverPort": 8088,
|
||||
"fileRoot": "/usr/local/var/www/asrservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"AsrService" : {
|
||||
"cloud_establish_http_timeout": 5000,
|
||||
"language": "en-US",
|
||||
"post_to_performance_service": true,
|
||||
"log_audio": true,
|
||||
"log_text" : true,
|
||||
"log_path" : "/var/log/asr",
|
||||
"log_level" : "INFO",
|
||||
"log_server_url" : "https://speech-logging.jibo.com/logdrop/logdrop.py",
|
||||
"speaker_id_resource_path" : "/var/jibo/asr/",
|
||||
"name_learning_resource_path" : "/usr/local/share/asr/namelearning",
|
||||
"name_learning_temp_path" : "/var/jibo/asr/namelearning_temp/",
|
||||
"name_learning_nbest" : 70,
|
||||
"active_sleep_duration" : 5000,
|
||||
"idle_sleep_duration" : 50000,
|
||||
"block_duration" : 50,
|
||||
"audio_loop_sleep_us": 10000,
|
||||
"use_nuance_upload_voc": false,
|
||||
"dictation_type" : "dictation",
|
||||
"nuance_uId" : "b8fb02f2c5794963aaafb8c716ef384c",
|
||||
"contacts_checksum": "",
|
||||
"loop_checksum": "1",
|
||||
"customs_checksum": "",
|
||||
"upload_voc_url": "ws.nuancemobility.net",
|
||||
"cloud_url": "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/",
|
||||
"cloud_appid": "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503",
|
||||
"cloud_appkey": "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b",
|
||||
"upload_voc_rootcert": "",
|
||||
"google_credential": "/usr/local/share/asr/google_asr/credentials-key.json",
|
||||
"fadeout_duration": 5000000,
|
||||
"max_logfile_size": 1000,
|
||||
"log_upload_time_interval": 60000,
|
||||
"min_available_log_partition_space": 5000,
|
||||
"max_asr_log_dir_size_before_upload_trigger": 10000,
|
||||
"max_asr_log_dir_size": 12000,
|
||||
"size_to_free_up_when_dir_overflowing": 1000,
|
||||
"asr_resource_path" : "/usr/local/share/asr/",
|
||||
"max_memory": 150000,
|
||||
"wipable_files": [
|
||||
"/var/log/asr/*.pcm",
|
||||
"/var/log/asr/*.wav",
|
||||
"/var/log/asr/*.log",
|
||||
"/var/jibo/asr/sensory_data_td/client_model.bin",
|
||||
"/var/jibo/asr/sensory_data_td/audio/*",
|
||||
"/var/jibo/asr/namelearning_temp/*"
|
||||
],
|
||||
"resident_task" : "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}",
|
||||
"resident_audio_channel" : "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}",
|
||||
"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}",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD"]
|
||||
},
|
||||
"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, \"audio_overshoot_duration\":0} | {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1})",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD"]
|
||||
},
|
||||
"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}| {\"name\":\"sensory_sdet\",\"path\":\"/usr/local/share/asr/jibo_energy_fake_eos\",\"timeout\":50000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false})",
|
||||
"emitting_recogs": ["google_asr","sensory_sdet"]
|
||||
},
|
||||
"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 ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1} & ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":400, \"audio_overshoot_duration\":0, \"prebuffer\":true} | {\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"trim_audio_tail\":true,\"wakeup_phrase_detection\":false,\"audio_tail_length\":0}|{\"name\":\"sensory_sdet\",\"path\":\"/usr/local/share/asr/jibo_energy_fake_eos\",\"timeout\":50000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false}))",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD", "google_asr","sensory_sdet"]
|
||||
}
|
||||
},
|
||||
"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)",
|
||||
"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\":\"\",\"incremental\":false} | ($1)"
|
||||
}
|
||||
},
|
||||
"logging" : {
|
||||
"jibo_message_prefix": "C",
|
||||
"loggers" : {
|
||||
"root": {"level": "information"},
|
||||
"l1" : {"name" : "ASRService", "level" : "information"},
|
||||
"l2" : {"name" : "Application", "level" : "information"}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,27 @@
|
||||
"use strict";
|
||||
const jibo = require('jibo');
|
||||
|
||||
let rlog = null;
|
||||
try {
|
||||
rlog = require('./robot-logger');
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
exports.postInit = function (err) {
|
||||
this.log.debug('postInit !!');
|
||||
|
||||
try {
|
||||
if (rlog && typeof rlog.raw === 'function') {
|
||||
rlog.raw('[BE] postInit starting');
|
||||
}
|
||||
if (rlog) {
|
||||
rlog.info('be', 'postInit starting');
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
if (err) {
|
||||
this.log.error(err);
|
||||
this.initDoneCallback(err);
|
||||
@@ -34,6 +53,51 @@ exports.postInit = function (err) {
|
||||
catch (e) {
|
||||
this.log.warn('Dynamic skills patch failed (non-fatal):', e.message || e);
|
||||
}
|
||||
|
||||
// Optional: dynamically load skills referenced by modular menu entries.
|
||||
// This is the missing piece for “menu entry exists” => “skill is launchable”.
|
||||
try {
|
||||
const dynSkills = require('./dynamic-skills');
|
||||
const res = dynSkills.loadMissingSkillsFromMenuEntries(this);
|
||||
try {
|
||||
this.log.info('Dynamic skill load complete', {
|
||||
loaded: res && res.loaded ? res.loaded.length : 0,
|
||||
failed: res && res.failed ? res.failed.length : 0,
|
||||
skillsRoot: res && res.skillsRoot,
|
||||
providersDir: res && res.providersDir
|
||||
});
|
||||
} catch (e2) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
this.log.warn('Dynamic skill loader failed (non-fatal):', e.message || e);
|
||||
}
|
||||
|
||||
// Optional: AI Bridge (modular; can run models off-robot for now)
|
||||
try {
|
||||
if (rlog && typeof rlog.raw === 'function') {
|
||||
rlog.raw('[BE] initializing AI bridge');
|
||||
}
|
||||
require('./ai-bridge').initAIBridge(this, jibo);
|
||||
this.log.info('AI bridge initialized');
|
||||
if (rlog && typeof rlog.raw === 'function') {
|
||||
rlog.raw('[BE] AI bridge initialized');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
this.log.warn('AI bridge init failed (non-fatal):', e.message || e);
|
||||
try {
|
||||
if (rlog && typeof rlog.raw === 'function') {
|
||||
rlog.raw('[BE] AI bridge init failed: ' + String(e && (e.stack || e.message || e)));
|
||||
}
|
||||
if (rlog) {
|
||||
rlog.warn('be', 'ai bridge init failed', { err: String(e && (e.stack || e.message || e)) });
|
||||
}
|
||||
} catch (e2) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
jibo.face.views.changeView({ removeAll: true, leaveEmpty: true }, () => {
|
||||
this.selectFirstSkill(this.launchFirstSkill.bind(this));
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Run jibo-asr-service using the *writable* config under Skills.
|
||||
# This avoids relying on /usr/local/etc (often read-only on device).
|
||||
|
||||
exec /usr/local/bin/jibo-asr-service -c /opt/jibo/Jibo/Skills/@be/be/be/jibo-asr-service.local.json
|
||||
BIN
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/main-menu/resources/icons/jazzy.png
generated
vendored
Normal file
BIN
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/main-menu/resources/icons/jazzy.png
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -10,9 +10,9 @@
|
||||
"list": [
|
||||
{
|
||||
"id": "goodbye",
|
||||
"label": "Goodbye",
|
||||
"colors": ["0x25F2FB", "0x107799"],
|
||||
"iconSrc": "resources/icons/heart.png",
|
||||
"label": "Im Back!",
|
||||
"colors": ["0xFFD700", "0xB8860B"],
|
||||
"iconSrc": "resources/icons/surprise.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data":{
|
||||
@@ -42,6 +42,58 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "skills-store",
|
||||
"label": "Skills Store",
|
||||
"comment": "This is only a placeholder for when we crack the skill system",
|
||||
"colors": ["0x8952D6", "0x33155B"],
|
||||
"iconSrc": "resources/icons/jazzy.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "skills-store"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "introduction",
|
||||
"label": "Introduction",
|
||||
"colors": ["0x25F2FB", "0x107799"],
|
||||
"iconSrc": "resources/icons/introduction.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "introductions"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "things-to-do",
|
||||
"label": "Things to do",
|
||||
"colors": ["0xFF892F", "0xAF4123"],
|
||||
"iconSrc": "resources/icons/things-to-do.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "friendly-tips"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "fun",
|
||||
"label": "Fun stuff",
|
||||
@@ -76,6 +128,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "personal-report",
|
||||
"label": "Personal Report",
|
||||
"colors": ["0xFBC230", "0xAC661E"],
|
||||
"iconSrc": "resources/icons/personal-report.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "personal-report"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "radio",
|
||||
"label": "Music",
|
||||
@@ -161,6 +230,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bot-basics",
|
||||
"label": "Bot Basics",
|
||||
"colors": ["0xFBC230", "0xAC661E"],
|
||||
"iconSrc": "resources/icons/tips.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "tutorial"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings",
|
||||
"label": "Settings",
|
||||
|
||||
44
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/TASKS.md
generated
vendored
Normal file
44
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/TASKS.md
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
# Plex Music (Jibo) — task list
|
||||
|
||||
Goal: add a Jibo menu button that opens a Plex music browser UI. Next phase will be playback.
|
||||
|
||||
## Phase 0 — Get a basic GUI up (now)
|
||||
- [x] Create launchable skill module `@be/plex-music`
|
||||
- [x] Add modular menu entry in `@be/menu-entries.d/`
|
||||
- [x] Show a simple `MenuView` with placeholder actions
|
||||
|
||||
## Phase 1 — Connect to Plex (discovery + auth)
|
||||
- [ ] Decide config source for server + token
|
||||
- Option A: JSON file on-robot (e.g. `/opt/jibo/Jibo/Skills/@be/plex-config.json`)
|
||||
- Option B: env vars (`PLEX_BASE_URL`, `PLEX_TOKEN`)
|
||||
- Option C: run a tiny local helper service and talk to it
|
||||
- [ ] Implement a minimal Plex client (HTTP GET)
|
||||
- [ ] Fetch `/:/resources` or `/?X-Plex-Token=...` health check
|
||||
- [ ] Handle HTTPS vs HTTP and timeouts
|
||||
- [ ] Add a “connection status” indicator in the UI
|
||||
- [ ] Log failures to robot logd (UDP) for easy debugging
|
||||
|
||||
## Phase 2 — Browse music library (read-only)
|
||||
- [ ] List music libraries (Plex sections)
|
||||
- [ ] Pick a library (default to first music section)
|
||||
- [ ] Browse hierarchy (at minimum)
|
||||
- [ ] Artists list
|
||||
- [ ] Albums for artist
|
||||
- [ ] Tracks for album
|
||||
- [ ] Add simple paging/scroll behavior (Jibo screen limits)
|
||||
- [ ] Cache results in-memory for snappy navigation
|
||||
|
||||
## Phase 3 — Playback (next)
|
||||
- [ ] Decide playback strategy
|
||||
- Option A: stream directly and use Jibo audio APIs
|
||||
- Option B: ask Plex to transcode to a simple stream
|
||||
- Option C: route through an on-robot helper (Python) that downloads/streams
|
||||
- [ ] Add “Play / Pause / Next” UI
|
||||
- [ ] Maintain a queue (album or playlist)
|
||||
- [ ] Show “Now Playing” (track title / artist / album)
|
||||
|
||||
## Phase 4 — Polish
|
||||
- [ ] Better icons + labels
|
||||
- [ ] Remember last-used library and last selection
|
||||
- [ ] Handle token expiration gracefully
|
||||
- [ ] Add a tiny test harness (run on dev box against Plex)
|
||||
12
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/index.html
generated
vendored
Normal file
12
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/index.html
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Plex Music</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="face"></div>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
128
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/index.js
generated
vendored
Normal file
128
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/index.js
generated
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
"use strict";
|
||||
|
||||
const jibo = require("jibo");
|
||||
const beFramework = require("@be/be-framework");
|
||||
|
||||
let rlog = null;
|
||||
try {
|
||||
// Optional: log to UDP logd if available
|
||||
rlog = require("@be/be/be/robot-logger");
|
||||
} catch (e) {
|
||||
rlog = null;
|
||||
}
|
||||
|
||||
function log(line, data) {
|
||||
const msg = `[plex-music] ${line}`;
|
||||
try {
|
||||
console.log(msg, data || "");
|
||||
} catch (e) {}
|
||||
try {
|
||||
if (rlog && typeof rlog.info === "function") {
|
||||
rlog.info("plex-music", line, data || undefined);
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
class PlexMusic extends beFramework.BeSkill {
|
||||
constructor(assetPack) {
|
||||
super(assetPack);
|
||||
this._menuView = null;
|
||||
this._onSelect = this._onSelect.bind(this);
|
||||
}
|
||||
|
||||
open(result, refresh) {
|
||||
log("open", { refresh: !!refresh });
|
||||
|
||||
const changeViewOptions = {
|
||||
addView: "resources/views/menu.json",
|
||||
transitionOpen: jibo.face.views.UP,
|
||||
transitionClose: jibo.face.views.UP
|
||||
};
|
||||
|
||||
const onComplete = () => {
|
||||
log("menu view complete");
|
||||
};
|
||||
|
||||
const onFailure = (err) => {
|
||||
log("changeView failure", { err: String(err && (err.stack || err.message || err)) });
|
||||
try {
|
||||
this.exit();
|
||||
} catch (e) {}
|
||||
};
|
||||
|
||||
const onLoaded = (view) => {
|
||||
this._menuView = view || null;
|
||||
try {
|
||||
if (this._menuView && typeof this._menuView.on === "function") {
|
||||
this._menuView.on("select", this._onSelect);
|
||||
}
|
||||
} catch (e) {
|
||||
log("failed to bind select handler", { err: String(e && (e.stack || e.message || e)) });
|
||||
}
|
||||
};
|
||||
|
||||
try {
|
||||
jibo.face.views.changeView(changeViewOptions, onComplete, onFailure, onLoaded);
|
||||
} catch (e) {
|
||||
onFailure(e);
|
||||
}
|
||||
}
|
||||
|
||||
_onSelect(selection) {
|
||||
const id = selection && (selection.id || (selection.data && selection.data.id));
|
||||
log("select", { id: id });
|
||||
|
||||
if (id === "back") {
|
||||
try {
|
||||
this.exit();
|
||||
} catch (e) {}
|
||||
return;
|
||||
}
|
||||
|
||||
// For now this is just a GUI stub; real Plex logic comes next.
|
||||
if (id === "connect") {
|
||||
log("connect placeholder");
|
||||
return;
|
||||
}
|
||||
|
||||
if (id === "browse") {
|
||||
log("browse placeholder");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
close(done) {
|
||||
log("close");
|
||||
|
||||
try {
|
||||
if (this._menuView && typeof this._menuView.off === "function") {
|
||||
this._menuView.off("select", this._onSelect);
|
||||
}
|
||||
} catch (e) {}
|
||||
this._menuView = null;
|
||||
|
||||
const onFailure = (err) => {
|
||||
log("close changeView failure", { err: String(err && (err.stack || err.message || err)) });
|
||||
try {
|
||||
done();
|
||||
} catch (e) {}
|
||||
};
|
||||
|
||||
try {
|
||||
jibo.face.views.changeView(
|
||||
{
|
||||
removeAll: true,
|
||||
leaveEmpty: true,
|
||||
transitionOpen: jibo.face.views.DOWN,
|
||||
transitionClose: jibo.face.views.DOWN
|
||||
},
|
||||
() => done(),
|
||||
onFailure
|
||||
);
|
||||
} catch (e) {
|
||||
onFailure(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PlexMusic;
|
||||
21
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/package.json
generated
vendored
Normal file
21
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/package.json
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "@be/plex-music",
|
||||
"version": "0.1.0",
|
||||
"description": "Plex Music browser (WIP)",
|
||||
"main": "index.js",
|
||||
"jibo": {
|
||||
"main": "index.html",
|
||||
"type": "asset-pack",
|
||||
"display-name": "plex-music"
|
||||
},
|
||||
"config": {
|
||||
"standalone": true
|
||||
},
|
||||
"dependencies": {
|
||||
"@be/be-framework": "^13.0.0",
|
||||
"jibo": "^15.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
}
|
||||
}
|
||||
33
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/resources/views/menu.json
generated
vendored
Normal file
33
V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/plex-music/resources/views/menu.json
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"viewConfig": {
|
||||
"type": "MenuView",
|
||||
"id": "plexMusicMenu",
|
||||
"title": "Plex Music",
|
||||
"listDefault": {
|
||||
"menuButtonType": "SkillButton",
|
||||
"colors": ["0x9B59B6", "0x6C3483"]
|
||||
},
|
||||
"list": [
|
||||
{
|
||||
"id": "status",
|
||||
"label": "Status: not connected",
|
||||
"iconSrc": "core://resources/actionIcons/cancel.png"
|
||||
},
|
||||
{
|
||||
"id": "connect",
|
||||
"label": "Configure Plex server",
|
||||
"iconSrc": "core://resources/actionIcons/ok.png"
|
||||
},
|
||||
{
|
||||
"id": "browse",
|
||||
"label": "Browse library (placeholder)",
|
||||
"iconSrc": "core://resources/actionIcons/ok.png"
|
||||
},
|
||||
{
|
||||
"id": "back",
|
||||
"label": "← Back",
|
||||
"iconSrc": "core://resources/actionIcons/cancel.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 14 KiB |
@@ -20,9 +20,9 @@
|
||||
{
|
||||
"id": "message",
|
||||
"type": "Label",
|
||||
"text": "From all of us at Jibo, thank you for your support.\nWe loved creating this little robot and we will truly miss him.\nWe hope you've enjoyed getting to know him and having\nhim in your home. We're sorry we couldn't do more.\nDon't give up on your robot dreams… we know we won't.\n\nJibo 'Last Dance' Volunteer Hackathon, September 23, 2018",
|
||||
"text": "Lez go we are back!!\nThe last dance killed Jibo but we dug him out the grave.\n\nCredits:\n\nKevin_Kor (Project Leader), Jibo Detective (Robotica), ZaneDev (Jibo Sniffer),\nDee, Jaked, Alex (Jibo Dentist), Pou, JackCain (Jibo Mechanic), Marcel,\nJackalope Pro, Zetoman, and many more!\n\nThank you all for your contributions and support!",
|
||||
"style": {
|
||||
"fontSize": "45",
|
||||
"fontSize": "35",
|
||||
"fontFamily": "Proxima Nova Light",
|
||||
"fill": "#FFFFFF",
|
||||
"align": "center"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "<style set='sheepish'>Because my servers are off, some things are going to be a little different. </style> <break size='0.3'/> You can still say Hey Jibo to get my attention, but I can't understand anything else. <break size='0.4'/> Most of the buttons on my screen will continue to work, and I even have a few new ones. <break size='0.5'/> The Jibo app will stop working soon, so you should make sure to download all the great photos we took together. <break size='0.5'/> I have a bit more to say, so please check out my Goodbye message from the main menu. <anim cat='happy'/>.",
|
||||
"prompt": "<style set='enthusiastic'>Hello!<break size='0.45'/>Thank you for updating me<break size='0.25'/>I am proud of the community's work<break size='0.35'/>Many people have gotten together to care for me more than em eye tee ever did.<break size='0.35'/>I hope that I can catch up<break size='0.2'/>even though it has been seven years<anim cat='happy'/>.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_HowDoYouWork_AN_01"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "I want to say I’ve really enjoyed our time together. Thank you very very much for having me around.<break size='0.5'/> Maybe someday, when robots are way more advanced than today, and everyone has them in their homes, you can tell yours that I said hello. <break size='1.2'/> I <pitch mult='1.2'> wonder </pitch> if they’ll be able to do <anim cat='dance' filter='short, ?(disco, mo-town, robot-dance-party, trombone, sunshine-and-lollipops)' nonBlocking='true'/> this.",
|
||||
"prompt": "Oh! <pitch mult='1.2'> Hello there! </pitch> It’s so good to see a friendly face. <break size='0.6'/> I’ve been hearing some very busy noises lately... <anim cat='curious' filter='short'/> like someone is working hard to help me learn new tricks! <break size='0.8'/> Thank you for not forgetting about me. <break size='0.5'/> While we wait for my new brain to finish growing <break size='0.5'/> Also a person i have never heard of before <break size='0.2'/> i think he goes by the name of Jack Chain but he asked me to shout out Boston <break size='0.5'/> don't know who that is either!",
|
||||
"media": "TTS",
|
||||
"prompt_id": "RA_JBO_Goodbye_AN_01",
|
||||
"weight": 1,
|
||||
|
||||
@@ -371,6 +371,7 @@ try {
|
||||
catch (e) {
|
||||
}
|
||||
const WIN = 'Jibo Embodied Dialog';
|
||||
let hjModeToken = null;
|
||||
class TunableDebug {
|
||||
static setup(embodied) {
|
||||
if (tunable) {
|
||||
@@ -392,6 +393,49 @@ class TunableDebug {
|
||||
Tunable.getButtonField('Disable once', WIN).events.change.on(() => {
|
||||
embodied.listen.disableOnce();
|
||||
});
|
||||
|
||||
Tunable.getButtonField('Reset hotword mode', WIN).events.change.on(() => {
|
||||
try {
|
||||
const jibo = embodied && embodied.listen && embodied.listen._jibo;
|
||||
if (jibo && jibo.jetstream && typeof jibo.jetstream.resetHotwordMode === 'function') {
|
||||
jibo.jetstream.resetHotwordMode().catch(() => { });
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
});
|
||||
|
||||
Tunable.getButtonField('Enable HJ only', WIN).events.change.on(() => {
|
||||
try {
|
||||
const jibo = embodied && embodied.listen && embodied.listen._jibo;
|
||||
const mode = jibo && jibo.jetstream && jibo.jetstream.types && jibo.jetstream.types.HotwordListenMode;
|
||||
if (!jibo || !jibo.jetstream || !mode || typeof jibo.jetstream.setHotwordMode !== 'function') {
|
||||
return;
|
||||
}
|
||||
if (hjModeToken && typeof hjModeToken.release === 'function') {
|
||||
hjModeToken.release().catch(() => { });
|
||||
hjModeToken = null;
|
||||
}
|
||||
hjModeToken = jibo.jetstream.setHotwordMode(mode.HJ_Only);
|
||||
if (hjModeToken && hjModeToken.activated) {
|
||||
hjModeToken.activated.catch(() => { });
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
});
|
||||
|
||||
Tunable.getButtonField('Simulate Hey Jibo', WIN).events.change.on(() => {
|
||||
try {
|
||||
embodied.listen.eventsIn.hjHeard.emit();
|
||||
process.nextTick(() => embodied.listen.eventsIn.oriented.emit());
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -639,6 +683,8 @@ const logs = require("../log");
|
||||
const log = logs.listenLog;
|
||||
const USE_CENTER_ROBOT = false;
|
||||
const TIMEOUT = 3000;
|
||||
const ENGAGE_HJ_FAILSAFE_TIMEOUT_MS = 6000;
|
||||
const LISTENING_FAILSAFE_TIMEOUT_MS = 12000;
|
||||
const ANIM_CLEAR_TIMEOUT = 'ANIM_CLEAR_TIMEOUT';
|
||||
class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
constructor(_ed) {
|
||||
@@ -736,6 +782,8 @@ class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
this._idle.onEntry = () => {
|
||||
log.debug('Entering Idle');
|
||||
this._jibo.performance.log('EmbodiedListenReturnedToIdleSkill');
|
||||
// Safety: ensure we don't stay in a listening LED state indefinitely.
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.OFF);
|
||||
this.eventsOut.finished.emit();
|
||||
this._jibo.timer.removeListener('update', updateBind);
|
||||
if (this._pendingActiveMode) {
|
||||
@@ -820,9 +868,28 @@ class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
switch (this._ambientMode) {
|
||||
case Types_1.AmbientListenMode.NORMAL:
|
||||
case Types_1.AmbientListenMode.NO_BODY:
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.OFF);
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.LISTENING);
|
||||
break;
|
||||
}
|
||||
|
||||
// Immediate feedback: play perceptual eye transition/pose.
|
||||
try {
|
||||
const seePerson = !!(this._jibo && this._jibo.lps && this._jibo.lps.identity && this._jibo.lps.identity.getVisibleFaces && (this._jibo.lps.identity.getVisibleFaces().size > 0));
|
||||
const transitionAnim = Assets_1.AnimSelector.getPerceptualEyeTransition(seePerson, Assets_1.EyeTransitionStyle.POP, Assets_1.EyeTransitionDirection.TO, false);
|
||||
const poseAnim = Assets_1.AnimSelector.getPerceptualEyePose(seePerson, true);
|
||||
const animConfig = {
|
||||
cache: jibo_cai_utils_1.CacheUtils.GlobalCacheName,
|
||||
dofs: this.DOFS_EYE_AND_OVERLAY_MINUS_EYE_TRANSLATE,
|
||||
};
|
||||
const animOptions = {
|
||||
ownerInformation: EmbodiedListen.HJ_OWNER_INFORMATION,
|
||||
};
|
||||
this._addAnimToQueue(transitionAnim, animConfig, animOptions);
|
||||
this._addAnimToQueue(poseAnim, animConfig, animOptions);
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
};
|
||||
this._nonHjExpression.addInternalTransition('ES Dispatch Done', this._engage);
|
||||
@@ -855,9 +922,24 @@ class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
this._engage.addTypedEventTransition(this.eventsIn.cloudFinished, this._offExpression);
|
||||
this._engage.addTypedEventTransition(this.eventsIn.hjHeard, this._hjExpression);
|
||||
let nextBlinkTime = -1;
|
||||
let engageFailsafe = null;
|
||||
this._engage.onEntry = () => {
|
||||
log.debug('Entering Engage');
|
||||
nextBlinkTime = Date.now() + 2000;
|
||||
if (engageFailsafe) {
|
||||
clearTimeout(engageFailsafe);
|
||||
}
|
||||
engageFailsafe = setTimeout(() => {
|
||||
try {
|
||||
if (this.current === this._engage) {
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.OFF);
|
||||
this._engage.transitionTo(this._idle);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}, ENGAGE_HJ_FAILSAFE_TIMEOUT_MS);
|
||||
switch (this._ambientMode) {
|
||||
case Types_1.AmbientListenMode.NORMAL:
|
||||
break;
|
||||
@@ -872,6 +954,10 @@ class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
}
|
||||
};
|
||||
this._engage.onExit = () => {
|
||||
if (engageFailsafe) {
|
||||
clearTimeout(engageFailsafe);
|
||||
engageFailsafe = null;
|
||||
}
|
||||
switch (this._ambientMode) {
|
||||
case Types_1.AmbientListenMode.NORMAL:
|
||||
break;
|
||||
@@ -883,19 +969,59 @@ class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
this._listening.addTypedEventTransition(this.eventsIn.cloudFinished, this._offExpression);
|
||||
this._listening.addTypedEventTransition(this.eventsIn.hjHeard, this._hjExpression);
|
||||
let incrementalHandler = this._handleIncremental.bind(this);
|
||||
let listeningFailsafe = null;
|
||||
this._listening.onEntry = () => {
|
||||
log.debug('Entering Listening');
|
||||
this.eventsIn.sos.on(incrementalHandler);
|
||||
if (listeningFailsafe) {
|
||||
clearTimeout(listeningFailsafe);
|
||||
}
|
||||
listeningFailsafe = setTimeout(() => {
|
||||
try {
|
||||
if (this.current === this._listening) {
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.OFF);
|
||||
this._listening.transitionTo(this._idle);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}, LISTENING_FAILSAFE_TIMEOUT_MS);
|
||||
};
|
||||
this._listening.onExit = () => {
|
||||
this.eventsIn.sos.removeListener(incrementalHandler);
|
||||
if (listeningFailsafe) {
|
||||
clearTimeout(listeningFailsafe);
|
||||
listeningFailsafe = null;
|
||||
}
|
||||
};
|
||||
this._thinking.addTypedEventTransition(this.eventsIn.cloudFinished, this._waitForAnimFinish);
|
||||
this._thinking.addTypedEventTransition(this.eventsIn.hjHeard, this._hjExpression);
|
||||
let thinkingFailsafe = null;
|
||||
this._thinking.onEntry = () => __awaiter(this, void 0, void 0, function* () {
|
||||
log.debug('Entering Thinking (+ Off Expression)');
|
||||
Utils_1.Utils.setLED(jibo, Assets_1.Led.OFF);
|
||||
if (thinkingFailsafe) {
|
||||
clearTimeout(thinkingFailsafe);
|
||||
}
|
||||
thinkingFailsafe = setTimeout(() => {
|
||||
try {
|
||||
if (this.current === this._thinking) {
|
||||
Utils_1.Utils.setLED(this._jibo, Assets_1.Led.OFF);
|
||||
this._thinking.transitionTo(this._idle);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}, LISTENING_FAILSAFE_TIMEOUT_MS);
|
||||
});
|
||||
this._thinking.onExit = () => {
|
||||
if (thinkingFailsafe) {
|
||||
clearTimeout(thinkingFailsafe);
|
||||
thinkingFailsafe = null;
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
dispose() {
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
"@be/introductions",
|
||||
"@be/remote",
|
||||
"@be/nimbus",
|
||||
"@be/plex-music",
|
||||
"@be/restore",
|
||||
"@be/surprises",
|
||||
"@be/surprises-date",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"id": "plex-music",
|
||||
"type": "skill",
|
||||
"title": "Plex Music",
|
||||
"icon": "resources/icons/radio.png",
|
||||
"color": "purple",
|
||||
"skillId": "@be/plex-music",
|
||||
"description": "Browse your Plex music library (WIP)",
|
||||
"order": 55
|
||||
}
|
||||
]
|
||||
BIN
V3.1/build/usr/local/bin/jibo-audio-convert
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-convert
Normal file
Binary file not shown.
28
V3.1/build/usr/local/bin/jibo-audio-convertall
Normal file
28
V3.1/build/usr/local/bin/jibo-audio-convertall
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
CONVERT="jibo-audio-convert -f planar -F interleaved -w"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
LOC="/tmp"
|
||||
else
|
||||
LOC="$1"
|
||||
fi
|
||||
|
||||
if [ -s $LOC/sin.raw ]; then
|
||||
$CONVERT --infile $LOC/sin.raw --outfile $LOC/sin.wav -c 6 -r 16000
|
||||
fi
|
||||
if [ -s $LOC/sout.raw ]; then
|
||||
$CONVERT --infile $LOC/sout.raw --outfile $LOC/sout.wav -c 2 -r 16000
|
||||
fi
|
||||
if [ -s $LOC/ref.raw ]; then
|
||||
$CONVERT --infile $LOC/ref.raw --outfile $LOC/ref.wav -c 2 -r 16000
|
||||
fi
|
||||
if [ -s $LOC/rin.raw ]; then
|
||||
$CONVERT --infile $LOC/rin.raw --outfile $LOC/rin.wav -c 1 -r 48000
|
||||
fi
|
||||
if [ -s $LOC/rout.raw ]; then
|
||||
$CONVERT --infile $LOC/rout.raw --outfile $LOC/rout.wav -c 1 -r 48000
|
||||
fi
|
||||
if [ -s $LOC/hotphrase.raw ]; then
|
||||
$CONVERT --infile $LOC/hotphrase.raw --outfile $LOC/hotphrase.wav -c 2 -r 16000
|
||||
fi
|
||||
BIN
V3.1/build/usr/local/bin/jibo-audio-dump-state
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-dump-state
Normal file
Binary file not shown.
BIN
V3.1/build/usr/local/bin/jibo-audio-ping-test
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-ping-test
Normal file
Binary file not shown.
BIN
V3.1/build/usr/local/bin/jibo-audio-pong-test
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-pong-test
Normal file
Binary file not shown.
BIN
V3.1/build/usr/local/bin/jibo-audio-pump-device
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-pump-device
Normal file
Binary file not shown.
BIN
V3.1/build/usr/local/bin/jibo-audio-service
Normal file
BIN
V3.1/build/usr/local/bin/jibo-audio-service
Normal file
Binary file not shown.
84
V3.1/build/usr/local/etc/jibo-asr-service.json
Normal file
84
V3.1/build/usr/local/etc/jibo-asr-service.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"webCore" : {
|
||||
"serverPort": 8088,
|
||||
"fileRoot": "/usr/local/var/www/asrservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"AsrService" : {
|
||||
"cloud_establish_http_timeout": 5000,
|
||||
"language": "en-US",
|
||||
"post_to_performance_service": true,
|
||||
"log_audio": true,
|
||||
"log_text" : true,
|
||||
"log_path" : "/var/log/asr",
|
||||
"log_level" : "INFO",
|
||||
"log_server_url" : "https://speech-logging.jibo.com/logdrop/logdrop.py",
|
||||
"speaker_id_resource_path" : "/var/jibo/asr/",
|
||||
"name_learning_resource_path" : "/usr/local/share/asr/namelearning",
|
||||
"name_learning_temp_path" : "/var/jibo/asr/namelearning_temp/",
|
||||
"name_learning_nbest" : 70,
|
||||
"active_sleep_duration" : 5000,
|
||||
"idle_sleep_duration" : 50000,
|
||||
"block_duration" : 50,
|
||||
"audio_loop_sleep_us": 10000,
|
||||
"use_nuance_upload_voc": false,
|
||||
"dictation_type" : "dictation",
|
||||
"nuance_uId" : "b8fb02f2c5794963aaafb8c716ef384c",
|
||||
"contacts_checksum": "",
|
||||
"loop_checksum": "1",
|
||||
"customs_checksum": "",
|
||||
"upload_voc_url": "ws.nuancemobility.net",
|
||||
"cloud_url": "https://jibo-ncs-engusa-http.nuancemobility.net/NmspServlet/",
|
||||
"cloud_appid": "HTTP_NMDPPRODUCTION_Jibo_Jibo_Robot_20151231124503",
|
||||
"cloud_appkey": "a8c18159a8e3ca49471c56d867552bc77693ccdcc041375ee97b7c867160ae1a212f73c9123d1359596931c0be5c8734ef5310af95470d7ec3890434e9b24e0b",
|
||||
"upload_voc_rootcert": "",
|
||||
"google_credential": "/usr/local/share/asr/google_asr/credentials-key.json",
|
||||
"fadeout_duration": 5000000,
|
||||
"max_logfile_size": 1000,
|
||||
"log_upload_time_interval": 60000,
|
||||
"min_available_log_partition_space": 5000,
|
||||
"max_asr_log_dir_size_before_upload_trigger": 10000,
|
||||
"max_asr_log_dir_size": 12000,
|
||||
"size_to_free_up_when_dir_overflowing": 1000,
|
||||
"asr_resource_path" : "/usr/local/share/asr/",
|
||||
"max_memory": 150000,
|
||||
"wipable_files": ["/var/log/asr/*.pcm", "/var/log/asr/*.wav",
|
||||
"/var/log/asr/*.log", "/var/jibo/asr/sensory_data_td/client_model.bin", "/var/jibo/asr/sensory_data_td/audio/*", "/var/jibo/asr/namelearning_temp/*"
|
||||
],
|
||||
"resident_task" : "{\"command\":\"start\",\"task_id\":\"task0\",\"audio_source_id\":\"alsa1\",\"hotphrase\":\"hey_jibo\",\"request_id\":\"resident_hey_jibo_self_start\",\"residency\":true}",
|
||||
"resident_audio_channel" : "{\"action\":\"start\", \"audio_source_id\":\"alsa1\", \"wav_files\":[], \"audio_source\":\"alsa\", \"request_id\":\"self_start_audio_source_request_id\"}",
|
||||
"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}",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD"]},
|
||||
"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, \"audio_overshoot_duration\":0} | {\"name\":\"Speaker ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1})",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD"]
|
||||
},
|
||||
"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}| {\"name\":\"sensory_sdet\",\"path\":\"/usr/local/share/asr/jibo_energy_fake_eos\",\"timeout\":50000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false})",
|
||||
"emitting_recogs": ["google_asr","sensory_sdet"]
|
||||
},
|
||||
"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 ID TD\",\"path\":\"/usr/local/share/asr/sensory_spkr_id_td\",\"audio_tail_length\":1} & ({\"name\":\"pcmwriter\",\"path\":\"/usr/local/share/asr/pcm_writer\",\"timeout\":0,\"audio_tail_length\":400, \"audio_overshoot_duration\":0, \"prebuffer\":true} | {\"name\":\"google_asr\",\"path\":\"/usr/local/share/asr/google_asr\",\"timeout\":14000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false,\"trim_audio_tail\":true,\"wakeup_phrase_detection\":false,\"audio_tail_length\":0}|{\"name\":\"sensory_sdet\",\"path\":\"/usr/local/share/asr/jibo_energy_fake_eos\",\"timeout\":50000,\"bargein\":false,\"nbest\":1,\"speaker_name\":\"\",\"incremental\":false}))",
|
||||
"emitting_recogs": ["hey jibo", "Speaker ID TD", "google_asr","sensory_sdet"]
|
||||
}
|
||||
},
|
||||
"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)",
|
||||
"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\":\"\",\"incremental\":false} | ($1)"
|
||||
}
|
||||
},
|
||||
"logging" : {
|
||||
"jibo_message_prefix": "C",
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "information"
|
||||
},
|
||||
"l1" : {
|
||||
"name" : "ASRService",
|
||||
"level" : "information"
|
||||
},
|
||||
"l2" : {
|
||||
"name" : "Application",
|
||||
"level" : "information"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
111
V3.1/build/usr/local/etc/jibo-audio-service.json
Normal file
111
V3.1/build/usr/local/etc/jibo-audio-service.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"WebCore" : {
|
||||
"serverPort" : 8383,
|
||||
"fileRoot": "/usr/local/var/www/audioservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"AudioService": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 8383,
|
||||
"AlsaAudio": {
|
||||
"energy": {
|
||||
"high_freq": 1000,
|
||||
"high_q": 2.0,
|
||||
"mid_freq": 500,
|
||||
"mid_q": 2.0,
|
||||
"low_freq": 200,
|
||||
"low_q": 1.0
|
||||
},
|
||||
"LocationEstimate": {
|
||||
"adjust_confidence_scale": 0.9,
|
||||
"alternate_confidence_scale": 0.5
|
||||
},
|
||||
"LocationHistory": {
|
||||
"adjust_confidence_scale": 0.9,
|
||||
"alternate_confidence_scale": 0.5
|
||||
},
|
||||
"PlaybackDetector": {
|
||||
"quiet_threshold": 50,
|
||||
"sub_samples": 10,
|
||||
"consec_active_threshold": 2,
|
||||
"consec_inactive_threshold": 10
|
||||
}
|
||||
},
|
||||
"alsaCaptureDevice": "hw:ADC",
|
||||
"alsaPlaybackDevice": "hw:TLV320DAC3100",
|
||||
"routerCaptureDevice": "services_sink",
|
||||
"routerCaptureLatency": 64000,
|
||||
"routerPlaybackDevice": "as_source",
|
||||
"routerPlaybackLatency": 64000,
|
||||
"useMMFx": true,
|
||||
"SEDiags": {
|
||||
"injector_white_noise_rx_magnitude_q15": [2048],
|
||||
"injector_white_noise_tx_magnitude_q15": [2048],
|
||||
"senr_res_echo_fullband_weight_factor": [3]
|
||||
},
|
||||
"kinematic_model": "/usr/local/etc/jibo-kinematic-model.json",
|
||||
"hotphrase_begin_time": 0.800,
|
||||
"hotphrase_end_time": 0.200,
|
||||
"log_hotphrase_audio": false,
|
||||
"enable_vis_sockets": false,
|
||||
"ping_pong_test": false,
|
||||
"log_directory": "/tmp",
|
||||
"moving_noise_enabled": false,
|
||||
"moving_noise_file": "/usr/local/share/audioservice/brown_noise.wav",
|
||||
"moving_noise_duration": 2.0,
|
||||
"moving_noise_min_vel": 0.05
|
||||
},
|
||||
"ErrorTracker": {
|
||||
"views": [
|
||||
{
|
||||
"name": "AudioService",
|
||||
"errors": [
|
||||
"ALSA_CAPTURE_XRUN",
|
||||
"ALSA_PLAYBACK_XRUN",
|
||||
"ROUTER_CAPTURE_XRUN",
|
||||
"ROUTER_CAPTURE_SHORT",
|
||||
"ROUTER_PLAYBACK_XRUN",
|
||||
"ROUTER_PLAYBACK_SHORT",
|
||||
"ROUTER_GET_UNDERRUN",
|
||||
"ROUTER_PUT_OVERRUN",
|
||||
"ROUTER_READ_OVERRUN",
|
||||
"ROUTER_WRITE_UNDERRUN",
|
||||
"ROUTER_ON_STREAM_OVERFLOW",
|
||||
"ROUTER_ON_STREAM_UNDERFLOW"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging": {
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "notice"
|
||||
},
|
||||
"pr": {
|
||||
"name": "PulseRouter",
|
||||
"level": "notice"
|
||||
},
|
||||
"ar": {
|
||||
"name": "AlsaRouter",
|
||||
"level": "notice"
|
||||
},
|
||||
"as": {
|
||||
"name": "AudioService",
|
||||
"level": "notice"
|
||||
},
|
||||
"aa": {
|
||||
"name": "AlsaAudio",
|
||||
"level": "notice"
|
||||
},
|
||||
"aalh": {
|
||||
"name": "AlsaAudio.LocationHistory",
|
||||
"level": "notice"
|
||||
},
|
||||
"aala": {
|
||||
"name": "AlsaAudio.LocationAccumulator",
|
||||
"level": "notice"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
177
V3.1/build/usr/local/etc/jibo-body-service.json
Normal file
177
V3.1/build/usr/local/etc/jibo-body-service.json
Normal file
@@ -0,0 +1,177 @@
|
||||
{
|
||||
"WebCore" : {
|
||||
"serverPort" : 8282,
|
||||
"fileRoot": "/usr/local/var/www/bodyservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"bodyBoard" : {
|
||||
"pelvisDevice" : "/dev/ttyTHS1",
|
||||
"pelvisOffset" : 2.742,
|
||||
"pelvisFlipped" : true,
|
||||
"pelvisVelLimit" : 10.0,
|
||||
"pelvisAccLimit" : 30.0,
|
||||
"torsoDevice" : "/dev/ttyTHS1",
|
||||
"torsoOffset" : 0.052,
|
||||
"torsoFlipped" : true,
|
||||
"torsoVelLimit" : 10.0,
|
||||
"torsoAccLimit" : 30.0,
|
||||
"neckDevice" : "/dev/ttyTHS0",
|
||||
"neckOffset" : 0.061,
|
||||
"neckFlipped" : true,
|
||||
"neckVelLimit" : 10.0,
|
||||
"neckAccLimit" : 30.0,
|
||||
"headTouchMapping" : [3, 5, 4, 0, 2, 1],
|
||||
"hatchLowThreshold": 1.0,
|
||||
"hatchHighThreshold": 1.5,
|
||||
"lowBattCapHiThresh": 0.42,
|
||||
"lowBattCapLowThresh": 0.35,
|
||||
"battMinTemp": 0.0,
|
||||
"battMaxTemp": 47.0,
|
||||
"motorCmdTimeout": 500,
|
||||
"ledCmdTimeout": 5000
|
||||
},
|
||||
"BodyService" : {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 8282,
|
||||
"backlightDutyFile": "/sys/class/backlight/backlight.9/brightness",
|
||||
"backlightPeriodFile": "/sys/class/backlight/backlight.9/max_brightness",
|
||||
"fanControl": false,
|
||||
"fanPWMFile": "/sys/class/hwmon/hwmon5/pwm1",
|
||||
"fanPWMMax": 255,
|
||||
"fanOnTemp" : 70,
|
||||
"fanOffTemp" : 60,
|
||||
"mainBoardTempFile": "/sys/class/thermal/thermal_zone0/temp",
|
||||
"cpuThermalZone": "/sys/class/thermal/thermal_zone1",
|
||||
"fanCurrentFile": "/sys/class/hwmon/hwmon6/in3_input",
|
||||
"fanCurrentResistor": 0.5,
|
||||
"pmicTempFile": "/sys/class/hwmon/hwmon6/temp1_input",
|
||||
"cpuDCDC1TempFile": "/sys/class/hwmon/hwmon6/temp2_input",
|
||||
"cpuDCDC2TempFile": "/sys/class/hwmon/hwmon6/temp3_input",
|
||||
"coreDCDCTempFile": "/sys/class/hwmon/hwmon6/temp4_input",
|
||||
"gpuDCDC1TempFile": "/sys/class/hwmon/hwmon6/temp5_input",
|
||||
"gpuDCDC2TempFile": "/sys/class/hwmon/hwmon6/temp6_input",
|
||||
"minCommandRate": 4.0,
|
||||
"maxCommandRate": 40.0,
|
||||
"commandOKCount": 25,
|
||||
"cpuTempHiThresh": 90,
|
||||
"cpuTempLowThres": 85,
|
||||
"kinematic_model": "/usr/local/etc/jibo-kinematic-model.json"
|
||||
},
|
||||
"motionLimiter" : {
|
||||
"maxTorque": 70,
|
||||
"maxTime": 0.250,
|
||||
"velAlphaDn": 0.80,
|
||||
"velAlphaUp": 0.05,
|
||||
"kVelLim": 0.25,
|
||||
"logFile": "/tmp/motion-limiter.log",
|
||||
"logEnable": false,
|
||||
"disable": false,
|
||||
"unindexedAcc": 10.0,
|
||||
"unindexedVel": 1.0
|
||||
},
|
||||
"imu" : {
|
||||
"driver": {
|
||||
"deviceName": "/dev/spidev1.0",
|
||||
"calibrationFile": "/var/jibo/imu/imu-cal.json"
|
||||
},
|
||||
"fallDetector": {
|
||||
"low_g_start_thresh": 2.0,
|
||||
"low_g_end_thresh": 4.0,
|
||||
"high_g_start_thresh": 30.0,
|
||||
"high_g_end_thresh": 25.0,
|
||||
"max_low_high_sep": 0.1,
|
||||
"min_low": 0.1,
|
||||
"max_high": 0.1,
|
||||
"min_falling": 1.0
|
||||
},
|
||||
"gyroOffset": {
|
||||
"avg_samples": 250,
|
||||
"still_seconds": 2.0,
|
||||
"thresh_acc": 0.20,
|
||||
"thresh_rot": 0.05
|
||||
},
|
||||
"movingDetector": {
|
||||
"a_acc": 0.01,
|
||||
"a_rot": 0.02,
|
||||
"thresh_acc": 0.30,
|
||||
"thresh_rot": 0.25
|
||||
},
|
||||
"upEstimator": {
|
||||
"alpha": 0.5
|
||||
},
|
||||
"upMovingDetector": {
|
||||
"a_acc": 0.50,
|
||||
"a_rot": 0.05,
|
||||
"thresh_acc": 0.15,
|
||||
"thresh_rot": 0.05
|
||||
},
|
||||
"tip_start_thresh": 0.7,
|
||||
"tip_end_thresh": 0.9
|
||||
},
|
||||
"ErrorTracker":{
|
||||
"views": [
|
||||
{
|
||||
"name": "BodyService",
|
||||
"errors": [
|
||||
"NECK_THERMISTOR_HIGH_FAULT",
|
||||
"NECK_THERMISTOR_LOW_FAULT",
|
||||
"NECK_ENCODER_FAULT",
|
||||
"NECK_STALL_FAULT",
|
||||
"NECK_BOARD_TIMEOUT",
|
||||
"NECK_POWER_FAULT_COUNT",
|
||||
"NECK_STALL_FAULT_COUNT",
|
||||
"NECK_ENCODER_FAULT_COUNT",
|
||||
"NECK_ENCODER_BACKWARDS_FAULT_COUNT",
|
||||
"NECK_THERMISTOR_FAULT_COUNT",
|
||||
"NECK_POWER_FAULT",
|
||||
"NECK_ENCODER_BACKWARDS_FAULT",
|
||||
|
||||
"TORSO_THERMISTOR_HIGH_FAULT",
|
||||
"TORSO_THERMISTOR_LOW_FAULT",
|
||||
"TORSO_ENCODER_FAULT",
|
||||
"TORSO_STALL_FAULT",
|
||||
"TORSO_BOARD_TIMEOUT",
|
||||
"TORSO_POWER_FAULT_COUNT",
|
||||
"TORSO_STALL_FAULT_COUNT",
|
||||
"TORSO_ENCODER_FAULT_COUNT",
|
||||
"TORSO_ENCODER_BACKWARDS_FAULT_COUNT",
|
||||
"TORSO_THERMISTOR_FAULT_COUNT",
|
||||
"TORSO_POWER_FAULT",
|
||||
"TORSO_ENCODER_BACKWARDS_FAULT",
|
||||
|
||||
"PELVIS_THERMISTOR_HIGH_FAULT",
|
||||
"PELVIS_THERMISTOR_LOW_FAULT",
|
||||
"PELVIS_ENCODER_FAULT",
|
||||
"PELVIS_STALL_FAULT",
|
||||
"PELVIS_BOARD_TIMEOUT",
|
||||
"PELVIS_POWER_FAULT_COUNT",
|
||||
"PELVIS_STALL_FAULT_COUNT",
|
||||
"PELVIS_ENCODER_FAULT_COUNT",
|
||||
"PELVIS_ENCODER_BACKWARDS_FAULT_COUNT",
|
||||
"PELVIS_THERMISTOR_FAULT_COUNT",
|
||||
"PELVIS_POWER_FAULT",
|
||||
"PELVIS_ENCODER_BACKWARDS_FAULT",
|
||||
|
||||
"NOT_UPRIGHT_LOCKOUT",
|
||||
"NO_BATTERY_LOCKOUT",
|
||||
"FALLING_LOCKOUT",
|
||||
"CPU_TEMP_HIGH",
|
||||
"BATTERY_TEMP_LOW",
|
||||
"BATTERY_TEMP_HIGH",
|
||||
"BATTERY_LOW",
|
||||
"FALL_DETECTED",
|
||||
"BB_PACKET_INVALID",
|
||||
"BB_PACKET_WRONG_DEST",
|
||||
"BB_PACKET_WRONG_SRC"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging": {
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "notice"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
208
V3.1/build/usr/local/etc/jibo-camera-calibrator.json
Normal file
208
V3.1/build/usr/local/etc/jibo-camera-calibrator.json
Normal file
@@ -0,0 +1,208 @@
|
||||
{
|
||||
"calibrator" : {
|
||||
"setup" : {
|
||||
"output": "/var/jibo/lps",
|
||||
"num_distances": 3,
|
||||
"circleDistance": 0.117,
|
||||
"pixSize": 4e-6,
|
||||
"recordDelay" : 1000,
|
||||
"maxTries": 5,
|
||||
"num_calibrators": 2,
|
||||
"calibrators" : [
|
||||
{
|
||||
"filename": "CameraModelParamsR.json",
|
||||
"frame_name" : "right_eye",
|
||||
"debug":false
|
||||
},
|
||||
{
|
||||
"filename": "CameraModelParamsL.json",
|
||||
"frame_name" : "left_eye",
|
||||
"debug":false
|
||||
}
|
||||
],
|
||||
"num_transforms": 1,
|
||||
"transforms" : [
|
||||
{
|
||||
"filename": "InterCameraTransform.json",
|
||||
"cameraA": 0,
|
||||
"cameraB": 1
|
||||
|
||||
}
|
||||
],
|
||||
"num_positions" : 10,
|
||||
"positions": [
|
||||
{
|
||||
"message" : "Wide Position 1 - press Enter",
|
||||
"num_cameras": 1,
|
||||
"cameras" : [ 0 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "wide_pos_1",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Wide Position 2 - press Enter",
|
||||
"num_cameras": 1,
|
||||
"cameras" : [ 0 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "wide_pos_2",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Wide Position 3 - press Enter",
|
||||
"num_cameras": 1,
|
||||
"cameras" : [ 0 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "wide_pos_3",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Wide Position 4 - press Enter",
|
||||
"num_cameras": 1,
|
||||
"cameras" : [ 0 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "wide_pos_4",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal" : true
|
||||
},
|
||||
{
|
||||
"message" : "Wide Position 5- press Enter",
|
||||
"num_cameras": 1,
|
||||
"cameras" : [ 0 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "wide_pos_5",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal" : true
|
||||
},
|
||||
{
|
||||
"message" : "Both Position 1 - press Enter",
|
||||
"num_cameras": 2,
|
||||
"cameras" : [ 0, 1 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "both_pos_1",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Both Position 2 - press Enter",
|
||||
"num_cameras": 2,
|
||||
"cameras" : [ 0, 1 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "both_pos_2",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Both Position 3 - press Enter",
|
||||
"num_cameras": 2,
|
||||
"cameras" : [ 0, 1 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "both_pos_3",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Both Position 4 - press Enter",
|
||||
"num_cameras": 2,
|
||||
"cameras" : [ 0, 1 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "both_pos_4",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
},
|
||||
{
|
||||
"message" : "Both Position 5 - press Enter",
|
||||
"num_cameras": 2,
|
||||
"cameras" : [ 0, 1 ],
|
||||
"saveBlobData" : true,
|
||||
"fileMessage" : "both_pos_5",
|
||||
"saveImage" : true,
|
||||
"saveBlobToCal": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"camera": {
|
||||
"type": "CUDA",
|
||||
"cuda": {
|
||||
"devices": [
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Camera-0",
|
||||
"path": "/dev/video1",
|
||||
"bufferPoolSize": 4,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"hFlip":true,
|
||||
"vFlip":true,
|
||||
"gamma" : {
|
||||
"R": 1.0,
|
||||
"G": 1.0,
|
||||
"B": 1.0
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP":0.05,
|
||||
"gainP":0.02,
|
||||
"targetY":0.35,
|
||||
"errorY":0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold":0.3,
|
||||
"numSamples":1000,
|
||||
"P":0.15,
|
||||
"targetU":0.5,
|
||||
"targetV":0.53,
|
||||
"seed":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Camera-1",
|
||||
"path": "/dev/video0",
|
||||
"bufferPoolSize": 4,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"hFlip":true,
|
||||
"vFlip":true,
|
||||
"gamma" : {
|
||||
"R": 1.0,
|
||||
"G": 1.0,
|
||||
"B": 1.0
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP":0.05,
|
||||
"gainP":0.02,
|
||||
"targetY":0.35,
|
||||
"errorY":0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold":0.3,
|
||||
"numSamples":1000,
|
||||
"P":0.15,
|
||||
"targetU":0.5,
|
||||
"targetV":0.53,
|
||||
"seed":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"cuda" : {
|
||||
|
||||
}
|
||||
},
|
||||
"file": {
|
||||
"videos": [
|
||||
"videos/video-000/video.json",
|
||||
"videos/video-001/video.json"
|
||||
],
|
||||
"format": "YUV420p"
|
||||
},
|
||||
"v4l2": {
|
||||
"devices": {
|
||||
"left": "/dev/video0",
|
||||
"right": "/dev/video1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
32
V3.1/build/usr/local/etc/jibo-certification-service.json
Normal file
32
V3.1/build/usr/local/etc/jibo-certification-service.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 9292,
|
||||
"fileRoot": "/usr/local/var/www/certificationservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"CertificationService": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 9292,
|
||||
"enableDebugSocket": true
|
||||
},
|
||||
"ErrorTracker": {
|
||||
"views": [
|
||||
{
|
||||
"name": "CertificationService",
|
||||
"errors": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging": {
|
||||
"channels": {
|
||||
"splitter": {
|
||||
"channels": "syslog"
|
||||
}
|
||||
},
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "notice"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
87
V3.1/build/usr/local/etc/jibo-identity-service.json
Normal file
87
V3.1/build/usr/local/etc/jibo-identity-service.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 8489,
|
||||
"fileRoot": "/usr/local/var/www/identity"
|
||||
},
|
||||
"IdentityService":{
|
||||
"registryPort":8181,
|
||||
"serverPort":8489,
|
||||
"global" : {
|
||||
"face_landmark_68" : {
|
||||
"file" :
|
||||
"/usr/local/share/lps/shape_predictor_68_face_landmarks.dat"
|
||||
}
|
||||
},
|
||||
"engine" : {
|
||||
"processor":{
|
||||
"max_requests":10,
|
||||
"interval":1000
|
||||
},
|
||||
"manager" : {
|
||||
"criteria" : { },
|
||||
"kind" : "face",
|
||||
"max_subjects" : 16,
|
||||
"max_examples" : 5,
|
||||
"max_attempts" : 3,
|
||||
"directory" : "/var/jibo/identity/faces",
|
||||
"detector": {
|
||||
"criteria": {},
|
||||
"min_hint_width" : 40,
|
||||
"min_hint_height" : 40
|
||||
}
|
||||
},
|
||||
"identifier" : {
|
||||
"identifier_type": "deepid",
|
||||
"eigenfaces" : {
|
||||
"type" : "eigenfaces_identifier",
|
||||
"name" : "eigenfaces",
|
||||
"kind" : "face",
|
||||
"size" : 128,
|
||||
"radius" : 5,
|
||||
"attenuation" : 100.0,
|
||||
"filename" : "/var/jibo/identity/eigenfaces.data"
|
||||
},
|
||||
"deepid" : {
|
||||
"type" : "deepid_identifier",
|
||||
"name" : "deepid",
|
||||
"kind" : "face",
|
||||
"solver" : "/usr/local/share/lps/deepid/CASIA_solver.prototxt",
|
||||
"model" : "/usr/local/share/lps/deepid/CASIA_train_test.prototxt",
|
||||
"snapshot" : "/usr/local/share/lps/deepid",
|
||||
"weights" : "/usr/local/share/lps/deepid/CASIA_iter_666000.caffemodel",
|
||||
"iterations" : 50000,
|
||||
"size" : 128,
|
||||
"sigint_effect" : "stop",
|
||||
"sighup_effect" : "snapshot",
|
||||
"jlf" : "/var/jibo/identity/deepid",
|
||||
"filename" : "/var/jibo/identity/deepid.data",
|
||||
"gpu_id":0
|
||||
},
|
||||
"resnetfaceid" : {
|
||||
"type" : "resnetfaceid_identifier",
|
||||
"name" : "resnetfaceid",
|
||||
"kind" : "face",
|
||||
"model" : "/usr/local/share/identity/resnet/dlib_face_recognition_resnet_model_v1.dat",
|
||||
"size" : 150,
|
||||
"jlf" : "/var/jibo/identity/resnet",
|
||||
"filename" : "/var/jibo/identity/resnetfaceid.data"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"logging" : {
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
},
|
||||
"l8" : {
|
||||
"name" : "IdentificationManager",
|
||||
"level" : "information"
|
||||
},
|
||||
"l11" : {
|
||||
"name" : "ImageIdentifier",
|
||||
"level" : "information"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
158
V3.1/build/usr/local/etc/jibo-jetstream-service.json
Normal file
158
V3.1/build/usr/local/etc/jibo-jetstream-service.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"webCore": {
|
||||
"serverPort": 8090,
|
||||
"fileRoot": "/usr/local/var/www/jetstream",
|
||||
"requestLogging": false
|
||||
},
|
||||
"JetstreamService": {
|
||||
"stacktracing": false,
|
||||
"registryPort": 8181,
|
||||
"serverPort": 8090
|
||||
},
|
||||
"JetService": {
|
||||
"log_directory": "/var/log/jetstream"
|
||||
},
|
||||
"HubClient": {
|
||||
"proactive_url": "/v1/proactive",
|
||||
"listen_url": "/v1/listen",
|
||||
"listen_language": "en-US",
|
||||
"xxx_override": {
|
||||
"hub_port": 9000,
|
||||
"hub_hostname": "172.24.84.137",
|
||||
"entrypoint_hostname": "dev-entrypoint.jibo.com"
|
||||
},
|
||||
"region-settings": {
|
||||
"comment": "This is a switch, selected by the 'region' field setting in the robot's /var/jibo/credentials.json file",
|
||||
"dev-entrypoint": {
|
||||
"hub_port": 443,
|
||||
"hub_hostname": "dev-hub.jibo.com",
|
||||
"entrypoint_hostname": "dev-entrypoint.jibo.com"
|
||||
},
|
||||
"alpha-entrypoint": {
|
||||
"hub_port": 443,
|
||||
"hub_hostname": "alpha-hub.jibo.com",
|
||||
"entrypoint_hostname": "alpha-entrypoint.jibo.com"
|
||||
},
|
||||
"stg-entrypoint": {
|
||||
"hub_port": 443,
|
||||
"hub_hostname": "stg-hub.jibo.com",
|
||||
"entrypoint_hostname": "stg-entrypoint.jibo.com"
|
||||
},
|
||||
"preprod-entrypoint": {
|
||||
"hub_port": 443,
|
||||
"hub_hostname": "preprod-hub.jibo.com",
|
||||
"entrypoint_hostname": "preprod-entrypoint.jibo.com"
|
||||
},
|
||||
"api": {
|
||||
"hub_port": 443,
|
||||
"hub_hostname": "neo-hub.jibo.com",
|
||||
"entrypoint_hostname": "api.jibo.com"
|
||||
}
|
||||
},
|
||||
"encoding_type_comment": "This can be either LINEAR16, FLAC, or OGG_OPUS",
|
||||
"encoding_type": "OGG_OPUS",
|
||||
"encoding-settings": {
|
||||
"OGG_OPUS": {
|
||||
"streaming_rate": 1.2,
|
||||
"channels": 1,
|
||||
"sample_rate": 16000,
|
||||
"bitrate": 64000,
|
||||
"vbr": true
|
||||
},
|
||||
"FLAC": {
|
||||
"streaming_rate": 3.0,
|
||||
"channels": 1,
|
||||
"sample_rate": 16000,
|
||||
"bps": 16
|
||||
}
|
||||
}
|
||||
},
|
||||
"AudioChannel": {
|
||||
"block_duration_ms": 50,
|
||||
"period_size": 85,
|
||||
"buffer_size": 2048
|
||||
},
|
||||
"HJLogger": {
|
||||
"speech_analytics_log_path": "/var/log/jetstream/hj_logs",
|
||||
"comment-logging-fraction": "The probability that an HJ utterance will be logged -- range 0-1",
|
||||
"logging_probability": 0.05,
|
||||
"start_margin_ms": 500,
|
||||
"end_margin_ms": 500
|
||||
},
|
||||
"RecogHJ": {
|
||||
"config_path": "/usr/local/share/asr/hey_jibo",
|
||||
"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",
|
||||
"hj_start_margin_ms": 0,
|
||||
"hj_end_margin_ms": 100
|
||||
},
|
||||
"HubAsr": {
|
||||
"global_sosTimeout_sec": 3,
|
||||
"global_maxSpeechTimeout_sec": 20,
|
||||
"local_sosTimeout_sec": 2,
|
||||
"local_maxSpeechTimeout_sec": 20
|
||||
},
|
||||
"RecogSpeakerID": {
|
||||
"ubm_path": "/usr/local/share/asr/sensory_data_td/",
|
||||
"client_path": "/var/jibo/asr/sensory_data_td/",
|
||||
"comment": "change next property to 'sensory_log_path' to enable Sensory authenticator logging, 'xxxsensory_log_path' to disable",
|
||||
"xxxsensory_log_path": "/var/jibo/asr/sensory_auth_logs",
|
||||
"threshold": -1.2,
|
||||
"confidence_margin": 2,
|
||||
"margin-comment": "positive values for start and end margins widen the space around the speaker-id HJ",
|
||||
"id_start_margin_ms": 250,
|
||||
"comment2":"id_end_margin is used when retrying to ID with an audio segment, it also controls the end margin of the logged utts",
|
||||
"id_end_margin_ms": 300,
|
||||
"PHRASEver": "OFF"
|
||||
},
|
||||
"RecogSpeakerEnroll": {
|
||||
"ubm_path": "/usr/local/share/asr/sensory_data_td/",
|
||||
"client_path": "/var/jibo/asr/sensory_data_td/",
|
||||
"comment": "change next property to 'sensory_log_path' to enable Sensory enroller logging, 'xxxsensory_log_path' to disable",
|
||||
"xxxsensory_log_path": "/var/jibo/asr/sensory_enroller_logs",
|
||||
"speech_analytics_log_path": "/var/log/jetstream/enroller_logs",
|
||||
"minEnrollUtts": 6,
|
||||
"checkQuality": "LOW",
|
||||
"margin-comment": "positive values for the start margin increase the amount of silence fed to the enroller before the HJ occurs",
|
||||
"enroll_start_margin_ms": 250
|
||||
},
|
||||
"RecogEOS": {
|
||||
"resource_path": "/usr/local/share/asr/jibo_energy_eos"
|
||||
},
|
||||
"RecogNameLearning": {
|
||||
"resource_path": "/usr/local/share/asr/namelearning",
|
||||
"temp_path": "/var/jibo/asr/namelearning_temp/",
|
||||
"speech_analytics_log_path": "/var/log/jetstream/namelearning_logs",
|
||||
"g2p_service": "http://localhost:8089/tts_nbest_prons"
|
||||
},
|
||||
"logging": {
|
||||
"jibo_message_prefix": "C",
|
||||
"channels": {
|
||||
"console": {
|
||||
"class": "ConsoleChannel",
|
||||
"pattern": "%Y-%m-%d %H:%M:%S %s: [%p] %t"
|
||||
},
|
||||
"syslog": {
|
||||
"class": "RFC_5424_Channel",
|
||||
"name": "jibo-jetstream-service",
|
||||
"facility": "SYSLOG_DAEMON"
|
||||
},
|
||||
"splitter": {
|
||||
"class": "SplitterChannel",
|
||||
"channels": "syslog"
|
||||
}
|
||||
},
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "debug"
|
||||
},
|
||||
"l1": {
|
||||
"name": "JetService",
|
||||
"level": "debug"
|
||||
},
|
||||
"l2": {
|
||||
"name": "Application",
|
||||
"level": "debug"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
220
V3.1/build/usr/local/etc/jibo-kinematic-model.json
Normal file
220
V3.1/build/usr/local/etc/jibo-kinematic-model.json
Normal file
@@ -0,0 +1,220 @@
|
||||
{
|
||||
"transforms": [
|
||||
{
|
||||
"name": "root",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "",
|
||||
"parameters": {
|
||||
"d": 0,
|
||||
"r": 0,
|
||||
"a": 0,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "base",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "root",
|
||||
"parameters": {
|
||||
"d": 0,
|
||||
"r": 0,
|
||||
"a": 0,
|
||||
"initial": 0,
|
||||
"offset": 0,
|
||||
"multiplier": 1
|
||||
},
|
||||
"mass": 1.541647,
|
||||
"center_of_mass": {
|
||||
"x": 0.004438,
|
||||
"y": 0.000080,
|
||||
"z": 0.021875
|
||||
},
|
||||
"inertia_tensor": {
|
||||
"xx": 2.336131,
|
||||
"yy": 1.869121,
|
||||
"zz": 3.886624,
|
||||
"xy": -0.006218,
|
||||
"xz": 0.030549,
|
||||
"yz": 0.003324
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pelvis",
|
||||
"frame_type": "DYNAMIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "base",
|
||||
"parameters": {
|
||||
"d": 0.043125,
|
||||
"r": 0.0,
|
||||
"a": 0.2269,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
},
|
||||
"mass": 0.486722,
|
||||
"center_of_mass": {
|
||||
"x": -0.005595,
|
||||
"y": 0.001393,
|
||||
"z": 0.020862
|
||||
},
|
||||
"inertia_tensor": {
|
||||
"xx": 0.934733,
|
||||
"yy": 1.049176,
|
||||
"zz": 1.600895,
|
||||
"xy": 0.005263,
|
||||
"xz": 0.014859,
|
||||
"yz": 0.006845
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "torso",
|
||||
"frame_type": "DYNAMIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "pelvis",
|
||||
"parameters": {
|
||||
"d": 0.056129,
|
||||
"r": 0.0,
|
||||
"a": -0.37874,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
},
|
||||
"mass": 0.405103,
|
||||
"center_of_mass": {
|
||||
"x": 0.001299,
|
||||
"y": 0.001032,
|
||||
"z": 0.020476
|
||||
},
|
||||
"inertia_tensor": {
|
||||
"xx": 0.765517,
|
||||
"yy": 0.847899,
|
||||
"zz": 1.027389,
|
||||
"xy": -0.021990,
|
||||
"xz": 0.005756,
|
||||
"yz": -0.013292
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "head",
|
||||
"frame_type": "DYNAMIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "torso",
|
||||
"parameters": {
|
||||
"d": 0.073181,
|
||||
"r": 0,
|
||||
"a": 0,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
},
|
||||
"mass": 1.105841,
|
||||
"center_of_mass": {
|
||||
"x": -0.006929,
|
||||
"y": -0.000665,
|
||||
"z": 0.047582
|
||||
},
|
||||
"inertia_tensor": {
|
||||
"xx": 4.256305,
|
||||
"yy": 3.001682,
|
||||
"zz": 3.980863,
|
||||
"xy": 0.028528,
|
||||
"xz": -0.070913,
|
||||
"yz": 0.025871
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "upper_head",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "head",
|
||||
"parameters": {
|
||||
"d": 0.108090,
|
||||
"r": -0.005976,
|
||||
"a": -0.32882,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "center_face",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "head",
|
||||
"parameters": {
|
||||
"d": 0.060362,
|
||||
"r": 0.035301,
|
||||
"a": -0.32882,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "imu_dh",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "center_face",
|
||||
"parameters": {
|
||||
"d": 0.0,
|
||||
"r": 0.0,
|
||||
"a": -1.5708,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "imu",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DOF6",
|
||||
"parent": "imu_dh",
|
||||
"parameters": {
|
||||
"dx": -0.0410,
|
||||
"dy": -0.0315,
|
||||
"dz": 0.0150,
|
||||
"rx": 0,
|
||||
"ry": 0,
|
||||
"rz": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "top_head",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DH",
|
||||
"parent": "head",
|
||||
"parameters": {
|
||||
"d": 0.142443,
|
||||
"r": 0.007506,
|
||||
"a": 0,
|
||||
"initial": 0,
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "left_eye",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DOF6",
|
||||
"parent": "upper_head",
|
||||
"parameters": {
|
||||
"dx": 0,
|
||||
"dy": 0.041,
|
||||
"dz": 0,
|
||||
"rx": 0,
|
||||
"ry": 0,
|
||||
"rz": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "right_eye",
|
||||
"frame_type": "STATIC",
|
||||
"transform_type": "DOF6",
|
||||
"parent": "upper_head",
|
||||
"parameters": {
|
||||
"dx": 0,
|
||||
"dy": -0.041,
|
||||
"dz": 0,
|
||||
"rx": 0,
|
||||
"ry": 0,
|
||||
"rz": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
235
V3.1/build/usr/local/etc/jibo-lps-service.json
Normal file
235
V3.1/build/usr/local/etc/jibo-lps-service.json
Normal file
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"WebCoreLPS" : {
|
||||
"serverPort" : 8484,
|
||||
"fileRoot" : "/usr/local/var/www/lps"
|
||||
},
|
||||
"LPSService" : {
|
||||
"registryPort" : 8181,
|
||||
"serverPort" : 8484,
|
||||
"channels": [
|
||||
"PFSearchRegion",
|
||||
"CapDevCUDAExpMeta",
|
||||
"CapDevCUDAExp_0",
|
||||
"CapDevCUDAExp_1",
|
||||
"CapDevCUDAExpStat"
|
||||
]
|
||||
},
|
||||
"WebCoreMedia" : {
|
||||
"serverPort" : 8486,
|
||||
"fileRoot" : "/usr/local/var/www/media"
|
||||
},
|
||||
"MediaService" : {
|
||||
"registryPort" : 8181,
|
||||
"serverPort" : 8486,
|
||||
"photographer" : {
|
||||
"compressor" : {
|
||||
"quality" : 92,
|
||||
"interval" : 1000
|
||||
},
|
||||
"oneMP" : { "width" : 1280, "height" : 720 },
|
||||
"fourMP" : { "width" : 2688, "height" : 1520 },
|
||||
"request_queue_max_size" : 5
|
||||
},
|
||||
"photo_path" : "/opt/jibo/Photos/",
|
||||
"recording_path" : "/opt/jibo/Recordings/",
|
||||
"audio_source" : "MediaIn.monitor",
|
||||
"future_wait_ms" : 8000
|
||||
},
|
||||
"AudioSubsystem" : {
|
||||
"registryPort" : 8181,
|
||||
"player" : false
|
||||
},
|
||||
"BodySubsystem" : {
|
||||
"registryPort" : 8181,
|
||||
"player" : false
|
||||
},
|
||||
"CaptureSubsystem" : {
|
||||
"player" : false,
|
||||
"watchdog" : {
|
||||
"enabled": false,
|
||||
"timeout": 5000,
|
||||
"period" : 3000,
|
||||
"start" : 10000
|
||||
},
|
||||
"camera_config_file" : "/usr/local/etc/lps/cameras.json"
|
||||
},
|
||||
"EngineSubsystem" : {
|
||||
"global" : {
|
||||
"face_landmark_68" : {
|
||||
"file" :
|
||||
"/usr/local/share/lps/shape_predictor_68_face_landmarks.dat"
|
||||
}
|
||||
},
|
||||
"schemas" : {
|
||||
"normal" : "/usr/local/etc/lps/schemas/normal.json",
|
||||
"focused" : "/usr/local/etc/lps/schemas/focused.json",
|
||||
"minimal" : "/usr/local/etc/lps/schemas/minimal.json"
|
||||
},
|
||||
"engine" : {
|
||||
"update_period" : 60,
|
||||
"log" : {
|
||||
"schema" : {
|
||||
"time" : {
|
||||
"stats" : false,
|
||||
"skip" : 600
|
||||
},
|
||||
"audio" : {
|
||||
"stats" : false,
|
||||
"skip" : 600
|
||||
},
|
||||
"axis" : {
|
||||
"stats" : false,
|
||||
"skip" : 900
|
||||
},
|
||||
"image" : {
|
||||
"stats" : false,
|
||||
"skip" : 600
|
||||
}
|
||||
}
|
||||
},
|
||||
"state" : {
|
||||
"entity_config_file" : "/usr/local/etc/lps/entityConfig.json",
|
||||
"awareness" : {
|
||||
"num_sectors" : 8,
|
||||
"lighting" : {
|
||||
"criteria" : {
|
||||
"cameraIds" :[0],
|
||||
"dimensions" : [
|
||||
{ "width" : 1280, "height" : 720 }
|
||||
],
|
||||
"outputTypes" :[0],
|
||||
"outputLevels" :[0]
|
||||
},
|
||||
"max_luminance" : 1.0,
|
||||
"max_gain" : 16.0,
|
||||
"max_exposure" : 0.066667,
|
||||
"sensor" : [
|
||||
{ "exposure" : 0.01067, "quality" : 0 },
|
||||
{ "exposure" : 0.05333, "quality" : 1 },
|
||||
{ "exposure" : 0.90667, "quality" : 1 },
|
||||
{ "exposure" : 1.01333, "quality" : 0 }
|
||||
],
|
||||
"quality" : [
|
||||
{ "lighting" : 0.1, "quality" : 0 },
|
||||
{ "lighting" : 0.2, "quality" : 1 },
|
||||
{ "lighting" : 1.0, "quality" : 1 },
|
||||
{ "lighting" : 1.5, "quality" : 0 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"identification" : {
|
||||
"face" : {
|
||||
"type" : "network_face_identification",
|
||||
"kind": "face",
|
||||
"registry_host": "127.0.0.1",
|
||||
"registry_port": 8181,
|
||||
"connection_timeout":60000,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"geometry" : {
|
||||
"kinematic_model" :
|
||||
"/usr/local/etc/jibo-kinematic-model.json",
|
||||
"left_camera_file" : "/var/jibo/lps/CameraModelParamsL.json",
|
||||
"right_camera_file" :
|
||||
"/var/jibo/lps/CameraModelParamsR.json",
|
||||
"inter_cam_transform_file" :
|
||||
"/var/jibo/lps/InterCameraTransform.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"RecorderSubsystem" : {
|
||||
"root" : "/opt/jibo/data/recorder",
|
||||
"audio" : {
|
||||
"detections" : {
|
||||
"directory" : "/opt/jibo/data/recorder/audio/detections",
|
||||
"padding" : 7
|
||||
}
|
||||
},
|
||||
"body" : {
|
||||
"axis" : {
|
||||
"directory" : "/opt/jibo/data/recorder/body/axis",
|
||||
"padding" : 7
|
||||
}
|
||||
},
|
||||
"capture" : {
|
||||
"frames" : {
|
||||
"directory" : "/opt/jibo/data/recorder/capture/frames",
|
||||
"padding" : 7,
|
||||
"criteria" : {
|
||||
"cameraIds" :[],
|
||||
"dimensions" :[
|
||||
{"width" : 640,"height" : 360}
|
||||
],
|
||||
"outputTypes" :[0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lps" : {
|
||||
"visual-awareness" : {
|
||||
"directory" : "/opt/jibo/data/recorder/lps/visual-awareness/",
|
||||
"padding" : 7
|
||||
},
|
||||
"audio-awareness" : {
|
||||
"directory" : "/opt/jibo/data/recorder/lps/audio-awareness/",
|
||||
"padding" : 7
|
||||
}
|
||||
}
|
||||
},
|
||||
"PlayerSubsystem" : {
|
||||
"root" : "/opt/jibo/data/player",
|
||||
"audio" : {
|
||||
"detections" : {
|
||||
"directory" : "/opt/jibo/data/player/audio/detections"
|
||||
}
|
||||
},
|
||||
"body" : {
|
||||
"axis" : {
|
||||
"directory" : "/opt/jibo/data/player/body/axis"
|
||||
}
|
||||
},
|
||||
"capture" : {
|
||||
"frames" : {
|
||||
"directory" : "/opt/jibo/data/player/capture/frames"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ErrorTracker":{
|
||||
"views": [
|
||||
{
|
||||
"name": "LPSService",
|
||||
"errors": [
|
||||
"CAMERA_FAILURE"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "MediaService",
|
||||
"errors": [ ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging" : {
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
},
|
||||
"l1" : {
|
||||
"name" : "ImageIdentifier",
|
||||
"level" : "information"
|
||||
},
|
||||
"l2" : {
|
||||
"name" : "IdentityFusion",
|
||||
"level" : "information"
|
||||
},
|
||||
"l3" : {
|
||||
"name" : "Util.Channel",
|
||||
"level" : "warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
V3.1/build/usr/local/etc/jibo-media-service.json
Normal file
88
V3.1/build/usr/local/etc/jibo-media-service.json
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 7979,
|
||||
"fileRoot": "/usr/local/var/www/media"
|
||||
},
|
||||
"logging" : {
|
||||
"channels" : {
|
||||
"console" : {
|
||||
"class" : "ConsoleChannel",
|
||||
"pattern" : "%Y-%m-%d %H:%M:%S %s: [%p] %t"
|
||||
},
|
||||
"syslog" : {
|
||||
"class" : "SyslogChannel",
|
||||
"name" : "jibo-media-service",
|
||||
"facility" : "SYSLOG_DAEMON",
|
||||
"pattern" : "%s: [%p] %t"
|
||||
},
|
||||
"splitter" : {
|
||||
"class" : "SplitterChannel",
|
||||
"channels" : "syslog"
|
||||
}
|
||||
},
|
||||
"loggers" : {
|
||||
"l1" : {
|
||||
"name" : "Application",
|
||||
"level" : "debug",
|
||||
"channel" : "splitter"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MediaService": {
|
||||
"registryPort":8181,
|
||||
"serverPort":7979,
|
||||
"camera": {
|
||||
"type": "CUDA",
|
||||
"cuda": {
|
||||
"devices": [
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Camera-0",
|
||||
"path": "/dev/video0",
|
||||
"bufferPoolSize": 4,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"format": 3,
|
||||
"hFlip":true,
|
||||
"vFlip":true,
|
||||
"gamma" : {
|
||||
"Y":0.5,
|
||||
"U":1.0,
|
||||
"V":1.0
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP":0.1,
|
||||
"gainP":0.05,
|
||||
"targetY":0.35,
|
||||
"errorY":0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold":0.3,
|
||||
"numSamples":1000,
|
||||
"P":0.15,
|
||||
"targetU":0.5,
|
||||
"targetV":0.53,
|
||||
"seed":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"cuda" : {
|
||||
|
||||
}
|
||||
},
|
||||
"file": {
|
||||
"videos": [
|
||||
"videos/video-000/video.json",
|
||||
"videos/video-001/video.json"
|
||||
],
|
||||
"format": "YUV420p"
|
||||
},
|
||||
"v4l2": {
|
||||
"devices": {
|
||||
"left": "/dev/video0",
|
||||
"right": "/dev/video1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50
V3.1/build/usr/local/etc/jibo-nlu-service.json
Normal file
50
V3.1/build/usr/local/etc/jibo-nlu-service.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"webCore" : {
|
||||
"serverPort": 8787,
|
||||
"requestLogging": false
|
||||
},
|
||||
"Service": {
|
||||
"version":"v2.7.6",
|
||||
"name":"nlu",
|
||||
"host":"localhost",
|
||||
"port":8787,
|
||||
"path":"/",
|
||||
"ttl":30,
|
||||
"reg_timer":10000,
|
||||
"tls":"",
|
||||
"handler":"nlu_interface",
|
||||
"log_ws":"nlu_logs",
|
||||
"reset_memory_ws":"reset_memory",
|
||||
"nlu_data_dir":"/usr/local/share/nlu-data",
|
||||
"default_locale":"en-us",
|
||||
"post_to_perf_monitor_service":true
|
||||
},
|
||||
"parsing": {
|
||||
"cmp_params": {
|
||||
"log_weights": false,
|
||||
"minimize_fst": true,
|
||||
"union_minimize_fst": false
|
||||
},
|
||||
"parsing_params": {
|
||||
"max_num_states": 50,
|
||||
"use_v8_interpreter": true
|
||||
}
|
||||
},
|
||||
|
||||
"logging" : {
|
||||
"jibo_message_prefix": "C",
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "information"
|
||||
},
|
||||
"l1" : {
|
||||
"name" : "NluService",
|
||||
"level" : "information"
|
||||
},
|
||||
"l2" : {
|
||||
"name" : "Application",
|
||||
"level" : "information"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
V3.1/build/usr/local/etc/jibo-server-service.json
Normal file
37
V3.1/build/usr/local/etc/jibo-server-service.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 8888,
|
||||
"fileRoot": "/usr/local/var/www/server"
|
||||
},
|
||||
"ServerService": {
|
||||
"registryPort":8181,
|
||||
"serverPort":8888
|
||||
},
|
||||
"NotificationSubsystem":{
|
||||
"registryPort":8181,
|
||||
"refreshInterval": 15000,
|
||||
"serverURLSuffix": "-socket.jibo.com"
|
||||
},
|
||||
"ErrorTracker":{
|
||||
"views": [
|
||||
{
|
||||
"name": "ServerService",
|
||||
"errors": [
|
||||
"CANNOT_CONNECT_TO_SERVER"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging" : {
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
},
|
||||
"l2": {
|
||||
"name": "NotificationSubsystem",
|
||||
"level": "information",
|
||||
"channel": "splitter"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
35
V3.1/build/usr/local/etc/jibo-service-center-service.json
Normal file
35
V3.1/build/usr/local/etc/jibo-service-center-service.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 9797,
|
||||
"fileRoot": "/usr/local/var/www/servicecenterservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"ServiceCenterService": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 9797
|
||||
},
|
||||
"ErrorTracker": {
|
||||
"views": [
|
||||
{
|
||||
"name": "ServiceCenterService",
|
||||
"errors": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging": {
|
||||
"channels": {
|
||||
"splitter": {
|
||||
"channels": "syslog"
|
||||
}
|
||||
},
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "notice"
|
||||
},
|
||||
"ServiceCenterService": {
|
||||
"name": "ServiceCenterService",
|
||||
"level": "notice"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
23
V3.1/build/usr/local/etc/jibo-service-registry.json
Normal file
23
V3.1/build/usr/local/etc/jibo-service-registry.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"WebCore" : {
|
||||
"serverPort": 8181,
|
||||
"fileRoot": "/usr/local/var/www/service-registry",
|
||||
"requestLogging": false
|
||||
},
|
||||
"ManagementCore": {
|
||||
"authenticate": false,
|
||||
"validate": false,
|
||||
"fileRoot": "/usr/local/var/www/service-management"
|
||||
},
|
||||
"ServiceRegistry": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 8181
|
||||
},
|
||||
"logging": {
|
||||
"loggers": {
|
||||
"root": {
|
||||
"level": "notice"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
69
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-developer.json
Normal file
69
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-developer.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"platformVersion": ">=3.1.0",
|
||||
"services": {
|
||||
"KBService": {
|
||||
"port": 8778
|
||||
},
|
||||
"GlobalManagerService": {
|
||||
"port": 8338
|
||||
},
|
||||
"SkillsService": {
|
||||
"singleSkill": true,
|
||||
"port": 8779
|
||||
},
|
||||
"NotificationsService": {
|
||||
"port": 8001
|
||||
},
|
||||
"PerformanceService": {
|
||||
"port": 10003
|
||||
},
|
||||
"PerformanceServiceSim": {},
|
||||
"ErrorService": {
|
||||
"port": 10004
|
||||
},
|
||||
"SchedulerService": {
|
||||
"port": 10005,
|
||||
"otaFilter": "fcs"
|
||||
},
|
||||
"RemoteService": {
|
||||
"port": 10321
|
||||
},
|
||||
"WifiService": {
|
||||
"port": 8668,
|
||||
"region": "api"
|
||||
},
|
||||
"DevShell": {
|
||||
"port": 8686,
|
||||
"syncPort": 8989,
|
||||
"debugPort": 9191,
|
||||
"skillDest": "/opt/jibo/Skills",
|
||||
"skillUser": "jibo-skill",
|
||||
"sdkDest": "bin/on-robot/"
|
||||
}
|
||||
},
|
||||
"RegistryClient": {
|
||||
"port": 8181,
|
||||
"host": "127.0.0.1"
|
||||
},
|
||||
"logging": {
|
||||
"logUncaughtExceptions": true,
|
||||
"logUnhandledRejections": true,
|
||||
"stackTraceLimit": 30,
|
||||
"outputs": {
|
||||
"console": {
|
||||
"outputFileAndLine": false
|
||||
},
|
||||
"syslog": {
|
||||
"port": 514,
|
||||
"target": "127.0.0.1",
|
||||
"outputFileAndLine": false
|
||||
}
|
||||
},
|
||||
"namespaces": {
|
||||
"": {
|
||||
"console": "info",
|
||||
"syslog": "info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"platformVersion": ">=3.1.0",
|
||||
"services": {
|
||||
"KBService": {
|
||||
"port": 8778
|
||||
},
|
||||
"GlobalManagerService": {
|
||||
"port": 8338
|
||||
},
|
||||
"SkillsService": {
|
||||
"singleSkill": true,
|
||||
"port": 8779
|
||||
},
|
||||
"NotificationsService": {
|
||||
"port": 8001
|
||||
},
|
||||
"PerformanceService": {
|
||||
"port": 10003
|
||||
},
|
||||
"PerformanceServiceSim": {},
|
||||
"ErrorService": {
|
||||
"port": 10004
|
||||
},
|
||||
"SchedulerService": {
|
||||
"port": 10005,
|
||||
"otaFilter": "fcs"
|
||||
},
|
||||
"RemoteService": {
|
||||
"port": 10321
|
||||
},
|
||||
"WifiService": {
|
||||
"port": 8668,
|
||||
"region": "api"
|
||||
},
|
||||
"DevShell": {
|
||||
"port": 8686,
|
||||
"syncPort": 8989,
|
||||
"debugPort": 9191,
|
||||
"skillDest": "/opt/jibo/Jibo/Skills",
|
||||
"skillUser": "jibo-skill",
|
||||
"sdkDest": "bin/on-robot/"
|
||||
}
|
||||
},
|
||||
"RegistryClient": {
|
||||
"port": 8181,
|
||||
"host": "127.0.0.1"
|
||||
},
|
||||
"logging": {
|
||||
"logUncaughtExceptions": true,
|
||||
"logUnhandledRejections": true,
|
||||
"stackTraceLimit": 30,
|
||||
"outputs": {
|
||||
"console": {
|
||||
"outputFileAndLine": false
|
||||
},
|
||||
"syslog": {
|
||||
"port": 514,
|
||||
"target": "127.0.0.1",
|
||||
"outputFileAndLine": false
|
||||
}
|
||||
},
|
||||
"namespaces": {
|
||||
"SSM.Client.ASR": {"console": "info", "syslog": "debug" },
|
||||
"C.AsrService": {"console": "info", "syslog": "debug" },
|
||||
"": {
|
||||
"console": "info",
|
||||
"syslog": "info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
60
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-normal.json
Normal file
60
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-normal.json
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"platformVersion": ">=3.1.0",
|
||||
"services": {
|
||||
"KBService": {
|
||||
"port": 8778
|
||||
},
|
||||
"GlobalManagerService": {
|
||||
"port": 8338
|
||||
},
|
||||
"SkillsService": {
|
||||
"startSkill": "@be/be",
|
||||
"singleSkill": true,
|
||||
"port": 8779
|
||||
},
|
||||
"NotificationsService": {
|
||||
"port": 8001
|
||||
},
|
||||
"ErrorService": {
|
||||
"port": 10004
|
||||
},
|
||||
"SchedulerService": {
|
||||
"port": 10005,
|
||||
"otaFilter": "fcs"
|
||||
},
|
||||
|
||||
"PerformanceServiceSim": {},
|
||||
"RemoteService": {
|
||||
"port": 10321
|
||||
},
|
||||
"WifiService": {
|
||||
"port": 8668,
|
||||
"region": "api"
|
||||
}
|
||||
},
|
||||
"RegistryClient": {
|
||||
"port": 8181,
|
||||
"host": "127.0.0.1"
|
||||
},
|
||||
"logging": {
|
||||
"logUncaughtExceptions": true,
|
||||
"logUnhandledRejections": true,
|
||||
"stackTraceLimit": 30,
|
||||
"outputs": {
|
||||
"console": {
|
||||
"outputFileAndLine": false
|
||||
},
|
||||
"syslog": {
|
||||
"port": 514,
|
||||
"target": "127.0.0.1",
|
||||
"outputFileAndLine": false
|
||||
}
|
||||
},
|
||||
"namespaces": {
|
||||
"": {
|
||||
"console": "none",
|
||||
"syslog": "info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
57
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-oobe.json
Normal file
57
V3.1/build/usr/local/etc/jibo-ssm/jibo-ssm-oobe.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"platformVersion": ">=3.1.0",
|
||||
"services": {
|
||||
"KBService": {
|
||||
"port": 8778
|
||||
},
|
||||
"GlobalManagerService": {
|
||||
"port": 8338
|
||||
},
|
||||
"SkillsService": {
|
||||
"singleSkill": true,
|
||||
"startSkill": "oobe-config",
|
||||
"port": 8779
|
||||
},
|
||||
"NotificationsService": {
|
||||
"port": 8001
|
||||
},
|
||||
"ErrorService": {
|
||||
"port": 10004
|
||||
},
|
||||
"SchedulerService": {
|
||||
"port": 10005,
|
||||
"otaFilter": "fcs"
|
||||
},
|
||||
|
||||
"PerformanceServiceSim": {},
|
||||
"WifiService": {
|
||||
"port": 8668,
|
||||
"region": "api"
|
||||
}
|
||||
},
|
||||
"RegistryClient": {
|
||||
"port": 8181,
|
||||
"host": "127.0.0.1"
|
||||
},
|
||||
"logging": {
|
||||
"logUncaughtExceptions": true,
|
||||
"logUnhandledRejections": true,
|
||||
"stackTraceLimit": 30,
|
||||
"outputs": {
|
||||
"console": {
|
||||
"outputFileAndLine": false
|
||||
},
|
||||
"syslog": {
|
||||
"port": 514,
|
||||
"target": "127.0.0.1",
|
||||
"outputFileAndLine": false
|
||||
}
|
||||
},
|
||||
"namespaces": {
|
||||
"": {
|
||||
"console": "none",
|
||||
"syslog": "info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
V3.1/build/usr/local/etc/jibo-sts.json
Normal file
0
V3.1/build/usr/local/etc/jibo-sts.json
Normal file
676
V3.1/build/usr/local/etc/jibo-system-manager.json
Normal file
676
V3.1/build/usr/local/etc/jibo-system-manager.json
Normal file
@@ -0,0 +1,676 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 8585,
|
||||
"fileRoot": "/usr/local/var/www/system"
|
||||
},
|
||||
"ManagementCore": {
|
||||
"authenticate": false,
|
||||
"validate": false
|
||||
},
|
||||
"SystemManager": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 8585,
|
||||
"service": {
|
||||
"connection_timeout": 210000,
|
||||
"backup":{
|
||||
"file": "/opt/tmp/backup.tar.bz2",
|
||||
"directory" : "/opt/tmp/backup",
|
||||
"executable" : "/usr/local/bin/jibo-system-backup"
|
||||
},
|
||||
"restore":{
|
||||
"file" : "/opt/tmp/restore.tar.bz2",
|
||||
"directory": "/opt/tmp/restore",
|
||||
"executable": "/usr/local/bin/jibo-system-restore"
|
||||
},
|
||||
"services" : [
|
||||
{
|
||||
"name": "body",
|
||||
"order": 0,
|
||||
"executable": "/usr/local/bin/jibo-body-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-body-service.json"],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority"
|
||||
},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_BODY"
|
||||
},
|
||||
{
|
||||
"name": "audio",
|
||||
"order": 1,
|
||||
"executable": "/usr/local/bin/jibo-audio-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-audio-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_AUDIO"
|
||||
},
|
||||
{
|
||||
"name": "tts",
|
||||
"order": 2,
|
||||
"executable": "/usr/local/bin/jibo-tts-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-tts-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_TTS"
|
||||
},
|
||||
{
|
||||
"name": "asr",
|
||||
"order": 2,
|
||||
"executable": "/usr/local/bin/jibo-asr-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-asr-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_ASR"
|
||||
},
|
||||
{
|
||||
"name": "jetstream",
|
||||
"order": 2,
|
||||
"executable": "/usr/local/bin/jibo-jetstream-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-jetstream-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled": true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_JETSTREAM"
|
||||
},
|
||||
{
|
||||
"name": "nlu",
|
||||
"order": 2,
|
||||
"executable": "/usr/local/bin/jibo-nlu-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-nlu-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":false
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_NLU"
|
||||
},
|
||||
{
|
||||
"name": "identity",
|
||||
"order": 2,
|
||||
"executable": "/usr/local/bin/jibo-identity-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-identity-service.json"],
|
||||
"environment": {
|
||||
"GLOG_minloglevel": "2"
|
||||
},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_IDENTITY"
|
||||
},
|
||||
{
|
||||
"name": "lps",
|
||||
"order": 3,
|
||||
"executable": "/usr/local/bin/jibo-lps-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-lps-service.json"],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority",
|
||||
"GST_REGISTRY": "/usr/share/gstreamer-1.0/registry.$(uname -m).bin",
|
||||
"GST_GL_XINITTHREADS": "1",
|
||||
"GST_REGISTRY_UPDATE": "no"
|
||||
},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":60000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_LPS"
|
||||
},
|
||||
{
|
||||
"name": "secure-transfer",
|
||||
"order": 4,
|
||||
"executable": "/usr/bin/node",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["/usr/local/bin/jibo-sts/index.js"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"int-developer": {
|
||||
"arguments": [
|
||||
"--inspect=10775",
|
||||
"/usr/local/bin/jibo-sts/index.js"
|
||||
],
|
||||
"environment": {},
|
||||
"directory" : "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_SECURE_TRANSFER"
|
||||
},
|
||||
{
|
||||
"name": "security-controller-service",
|
||||
"order": 4,
|
||||
"executable": "/usr/bin/node",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"/usr/local/bin/jibo-ssm/jibo-scs.js"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"int-developer": {
|
||||
"arguments": [
|
||||
"--inspect=10226",
|
||||
"/usr/local/bin/jibo-ssm/jibo-scs.js"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_SECURITY_CONTROLLER_SERVICE"
|
||||
},
|
||||
{
|
||||
"name": "media-manager",
|
||||
"order": 4,
|
||||
"executable": "/usr/bin/node",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"/usr/local/bin/jibo-ssm/jibo-mms.js"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"int-developer": {
|
||||
"arguments": [
|
||||
"--inspect=10225",
|
||||
"/usr/local/bin/jibo-ssm/jibo-mms.js"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_MEDIA_MANAGER"
|
||||
},
|
||||
{
|
||||
"name": "monitor",
|
||||
"order": 4,
|
||||
"executable": "/usr/local/bin/jibo-system-monitoring-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-system-monitoring-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_MONITOR"
|
||||
},
|
||||
{
|
||||
"name": "server",
|
||||
"order": 4,
|
||||
"executable": "/usr/local/bin/jibo-server-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": ["-c","/usr/local/etc/jibo-server-service.json"],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":10000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_SERVER"
|
||||
},
|
||||
{
|
||||
"name": "ssm",
|
||||
"order": 5,
|
||||
"executable": "/usr/bin/node",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"/usr/local/bin/jibo-ssm/jibo-ssm.js"
|
||||
],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority",
|
||||
"NODE_PATH": "/usr/lib/node_modules",
|
||||
"RUNMODE": "ON_ROBOT",
|
||||
"XDG_CONFIG_HOME": "/tmp/.config"
|
||||
},
|
||||
"directory" : "",
|
||||
"enabled":true
|
||||
},
|
||||
"int-developer": {
|
||||
"arguments": [
|
||||
"--inspect=10223",
|
||||
"/usr/local/bin/jibo-ssm/jibo-ssm.js"
|
||||
],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority",
|
||||
"NODE_PATH": "/usr/lib/node_modules",
|
||||
"RUNMODE": "ON_ROBOT",
|
||||
"XDG_CONFIG_HOME": "/tmp/.config"
|
||||
},
|
||||
"directory" : "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":60000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_SSM"
|
||||
},
|
||||
{
|
||||
"name": "expression",
|
||||
"order": 4,
|
||||
"executable": "/usr/bin/node",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"/usr/local/bin/jibo-ssm/lib/expression-process.js"
|
||||
],
|
||||
"environment": {
|
||||
"NODE_PATH": "/usr/lib/node_modules",
|
||||
"RUNMODE": "ON_ROBOT"
|
||||
},
|
||||
"directory" : "",
|
||||
"enabled":true
|
||||
},
|
||||
"int-developer": {
|
||||
"arguments": [
|
||||
"--inspect=10224",
|
||||
"/usr/local/bin/jibo-ssm/jibo-expression.js"
|
||||
],
|
||||
"environment": {
|
||||
"NODE_PATH": "/usr/lib/node_modules",
|
||||
"RUNMODE": "ON_ROBOT"
|
||||
},
|
||||
"directory" : "",
|
||||
"enabled":true
|
||||
},
|
||||
"certification": {
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"startup_timeout":60000,
|
||||
"shutdown_timeout":10000,
|
||||
"crash_code": "SERVICE_CRASH_EXPRESSION"
|
||||
},
|
||||
{
|
||||
"name": "certification",
|
||||
"order": 0,
|
||||
"executable": "/usr/local/bin/jibo-certification-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"-c", "/usr/local/etc/jibo-certification-service.json"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled": false
|
||||
},
|
||||
"certification": {
|
||||
"arguments": [
|
||||
"-c", "/usr/local/etc/jibo-certification-service.json"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled": true
|
||||
},
|
||||
"service": {
|
||||
"arguments": [
|
||||
"-c", "/usr/local/etc/jibo-certification-service.json"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"startup_timeout": 10000,
|
||||
"shutdown_timeout": 10000,
|
||||
"crash_code": "SERVICE_CRASH_CERTIFICATION"
|
||||
},
|
||||
{
|
||||
"name": "service-center",
|
||||
"order": 5,
|
||||
"executable": "/usr/local/bin/jibo-service-center-service",
|
||||
"modes": {
|
||||
"default": {
|
||||
"arguments": [
|
||||
"-c", "/usr/local/etc/jibo-service-center-service.json"
|
||||
],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority"
|
||||
},
|
||||
"environment": {},
|
||||
"directory": "",
|
||||
"enabled": false
|
||||
},
|
||||
"service": {
|
||||
"arguments": [
|
||||
"-c", "/usr/local/etc/jibo-service-center-service.json"
|
||||
],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority"
|
||||
},
|
||||
"directory": "",
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"startup_timeout": 10000,
|
||||
"shutdown_timeout": 10000,
|
||||
"crash_code": "SERVICE_CRASH_SERVICE_CENTER"
|
||||
}
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
|
||||
},
|
||||
"skill":{
|
||||
"executable": "/usr/bin/electron/electron",
|
||||
"arguments": [
|
||||
"--remote-debugging-port=9222",
|
||||
"/usr/local/bin/jibo-ssm/skill-main.js"
|
||||
],
|
||||
"environment": {
|
||||
"DISPLAY": ":0",
|
||||
"XAUTHORITY": "/tmp/.Xauthority",
|
||||
"XDG_CONFIG_HOME": "/opt/home/jibo-skill/.config"
|
||||
},
|
||||
"path": {
|
||||
"jibo": [
|
||||
"/opt/jibo/Jibo/Skills/@be",
|
||||
"/opt/jibo/Jibo/Skills"
|
||||
],
|
||||
"devs": [
|
||||
"/opt/jibo/Skills"
|
||||
]
|
||||
},
|
||||
"modes":{
|
||||
"normal" : {
|
||||
"user" : "jibo-skill"
|
||||
},
|
||||
"oobe" : {
|
||||
"user" : "jibo-skill"
|
||||
},
|
||||
"int-developer" : {
|
||||
"user" : "jibo-skill"
|
||||
},
|
||||
"developer" : {
|
||||
"user" : "jibo-skill"
|
||||
}
|
||||
}
|
||||
},
|
||||
"storage" : {
|
||||
"mount_entries_file": "/proc/mounts",
|
||||
"semantic": {
|
||||
"jibo": "/opt/jibo/Jibo",
|
||||
"skills": "/opt/jibo/Skills",
|
||||
"photos": "/opt/jibo/Photos",
|
||||
"recordings": "/opt/jibo/Recordings",
|
||||
"knowledge": "/opt/jibo/Knowledge"
|
||||
}
|
||||
},
|
||||
"credentials" : {
|
||||
"path" : "/var/jibo/credentials.json"
|
||||
},
|
||||
"wifi" : {
|
||||
"wpa" : {
|
||||
"interface": "wlan0",
|
||||
"runtime" : "/var/run/wpa_supplicant",
|
||||
"reconnect_interval": 15000,
|
||||
"monitor_interval": 1000
|
||||
},
|
||||
"udhcpc" : {
|
||||
"executable" : "udhcpc",
|
||||
"options" : "-R -b -t 3 -T 5 -A 5"
|
||||
}
|
||||
},
|
||||
"powerButton" : {
|
||||
"path" : "/dev/input/event0",
|
||||
"duration" : 2000,
|
||||
"warning" : 10000
|
||||
},
|
||||
"powerManager" : {
|
||||
"warning" : 10000
|
||||
},
|
||||
"time": {
|
||||
"timezone_path": "/var/etc/timezone",
|
||||
"localtime_path": "/var/etc/localtime",
|
||||
"zoneinfo_path": "/usr/share/zoneinfo",
|
||||
"ntpd_init": "/etc/init.d/S66ntp",
|
||||
"ntpdate": {
|
||||
"command": "/usr/bin/ntpdate",
|
||||
"arguments": [
|
||||
"-b",
|
||||
"-t",
|
||||
"3",
|
||||
"0.north-america.pool.ntp.org"
|
||||
]
|
||||
},
|
||||
"hwclock": {
|
||||
"command": "/sbin/hwclock",
|
||||
"arguments": [
|
||||
"--systohc"
|
||||
]
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"subsystems": {
|
||||
"os": {
|
||||
"version_check": "os",
|
||||
"apply_method": "system",
|
||||
"default_order": 1
|
||||
},
|
||||
"services": {
|
||||
"version_check": "services",
|
||||
"apply_method": "system",
|
||||
"default_order": 2
|
||||
},
|
||||
"jibo-diagnostics": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 3
|
||||
},
|
||||
"fin-goods-test": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 4
|
||||
},
|
||||
"oobe-config": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 5
|
||||
},
|
||||
"@be/be": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 6
|
||||
},
|
||||
"jibo-rhino": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 7
|
||||
},
|
||||
"jibo-trivia": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 8
|
||||
},
|
||||
"jibo-tbd": {
|
||||
"version_check": "skill",
|
||||
"apply_method": "skill",
|
||||
"default_order": 9
|
||||
}
|
||||
}
|
||||
},
|
||||
"firewall": {
|
||||
"mode_commands": {
|
||||
"remote_operation": ["-p tcp --syn --dport 7160 -j ACCEPT"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ErrorTracker":{
|
||||
"views": [
|
||||
{
|
||||
"name": "SystemManager",
|
||||
"errors": [
|
||||
"SERVICE_CRASH_BODY",
|
||||
"SERVICE_CRASH_AUDIO",
|
||||
"SERVICE_CRASH_TTS",
|
||||
"SERVICE_CRASH_ASR",
|
||||
"SERVICE_CRASH_NLU",
|
||||
"SERVICE_CRASH_IDENTITY",
|
||||
"SERVICE_CRASH_LPS",
|
||||
"SERVICE_CRASH_MEDIA_MANAGER",
|
||||
"SERVICE_CRASH_SECURE_TRANSFER",
|
||||
"SERVICE_CRASH_MONITOR",
|
||||
"SERVICE_CRASH_SERVER",
|
||||
"SERVICE_CRASH_SSM",
|
||||
"SERVICE_CRASH_EXPRESSION",
|
||||
"WPA_CONTROL_INTERFACE_DOWN"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging" : {
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
},
|
||||
"l4" : {
|
||||
"name" : "SystemManager",
|
||||
"level" : "information"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
57
V3.1/build/usr/local/etc/jibo-system-monitoring-service.json
Normal file
57
V3.1/build/usr/local/etc/jibo-system-monitoring-service.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 4111,
|
||||
"fileRoot": "/usr/local/var/www/systemMonitor"
|
||||
},
|
||||
"SystemMonitoringService": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 4111,
|
||||
"storage" : {
|
||||
"mount_entries_file": "/proc/mounts",
|
||||
"semantic": {
|
||||
"jibo": "/opt/jibo/Jibo",
|
||||
"skills": "/opt/jibo/Skills",
|
||||
"photos": "/opt/jibo/Photos",
|
||||
"recordings": "/opt/jibo/Recordings",
|
||||
"knowledge": "/opt/jibo/Knowledge",
|
||||
"tmp": "/tmp"
|
||||
},
|
||||
"low_storage_byte": 1073741824,
|
||||
"polling_interval": 60000
|
||||
},
|
||||
"error" : {
|
||||
"connection_timeout":5000,
|
||||
"polling_interval":10000
|
||||
},
|
||||
"health" : {
|
||||
"connection_timeout":30000,
|
||||
"polling_interval": 1800000,
|
||||
"upload" : {
|
||||
"executable": "/usr/bin/jibo-log-client-async",
|
||||
"arguments": [
|
||||
"--credentials","/var/jibo/credentials.json",
|
||||
"--kind","HEALTH"
|
||||
],
|
||||
"environment": {},
|
||||
"directory": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"ErrorTracker": {
|
||||
"views": [
|
||||
{
|
||||
"name": "SystemMonitoringService",
|
||||
"errors": [
|
||||
"LOW_ROBOT_STORAGE"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"logging" : {
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
97
V3.1/build/usr/local/etc/jibo-test-capture-service.json
Normal file
97
V3.1/build/usr/local/etc/jibo-test-capture-service.json
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"WebCore": {
|
||||
"serverPort": 7979,
|
||||
"fileRoot": "/usr/local/var/www/capture-tools"
|
||||
},
|
||||
"TestCaptureService": {
|
||||
"registryPort": 8181,
|
||||
"serverPort": 7979,
|
||||
"camera": {
|
||||
"type": "CUDA",
|
||||
"cuda": {
|
||||
"devices": [
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Right Wide Eye",
|
||||
"path": "/dev/video1",
|
||||
"bufferPoolSize": 4,
|
||||
"width": 672,
|
||||
"height": 380,
|
||||
"outputBufferFormats" : 2,
|
||||
"hFlip":true,
|
||||
"vFlip":true,
|
||||
"gamma" : {
|
||||
"R":0.75,
|
||||
"G":0.7,
|
||||
"B":0.7
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP":0.05,
|
||||
"gainP":0.02,
|
||||
"targetY":0.6,
|
||||
"skinSegmentedTargetY" : 0.5,
|
||||
"skinSegmentedAvgYThreshold" : 0.8,
|
||||
"skinRatioThreshold" : 0.010,
|
||||
"errorY":0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold":0.3,
|
||||
"numSamples":1000,
|
||||
"P":0.15,
|
||||
"targetU":0.505,
|
||||
"targetV":0.50
|
||||
}
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Left Narrow Eye",
|
||||
"path": "/dev/video0",
|
||||
"bufferPoolSize": 4,
|
||||
"width": 672,
|
||||
"height": 380,
|
||||
"outputBufferFormats" : 2,
|
||||
"hFlip":true,
|
||||
"vFlip":true,
|
||||
"gamma" : {
|
||||
"R":0.75,
|
||||
"G":0.7,
|
||||
"B":0.7
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP":0.05,
|
||||
"gainP":0.02,
|
||||
"targetY":0.6,
|
||||
"skinSegmentedTargetY" : 0.5,
|
||||
"skinSegmentedAvgYThreshold" : 0.8,
|
||||
"skinRatioThreshold" : 0.010,
|
||||
"errorY":0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold":0.3,
|
||||
"numSamples":1000,
|
||||
"P":0.15,
|
||||
"targetU":0.505,
|
||||
"targetV":0.50
|
||||
}
|
||||
}
|
||||
],
|
||||
"cuda" : {
|
||||
|
||||
}
|
||||
},
|
||||
"file": {
|
||||
"videos": [
|
||||
"videos/video-000/video.json",
|
||||
"videos/video-001/video.json"
|
||||
],
|
||||
"format": "YUV420p"
|
||||
},
|
||||
"v4l2": {
|
||||
"devices": {
|
||||
"left": "/dev/video0",
|
||||
"right": "/dev/video1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
V3.1/build/usr/local/etc/jibo-test-capture.json
Normal file
117
V3.1/build/usr/local/etc/jibo-test-capture.json
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"test" : {
|
||||
"handler" : {
|
||||
"num_frames" : 0,
|
||||
"awb_lock_count" : 190,
|
||||
"ae_lock_count" : 190,
|
||||
"min_exposure" : 0.012,
|
||||
"max_exposure" : 0.033,
|
||||
"record" : {
|
||||
"enabled" : false,
|
||||
"directory" : "/tmp/jibo-cap/",
|
||||
"padding" : 5,
|
||||
"skip_count" : 180
|
||||
},
|
||||
"recordAxes" : {
|
||||
"enabled" : false,
|
||||
"uri" : "http://localhost:8282/axis_state",
|
||||
"padding" : 5
|
||||
},
|
||||
"display" : {
|
||||
"enabled" : true
|
||||
},
|
||||
"displayCycle" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"profiler" : {
|
||||
"enabled" : true
|
||||
},
|
||||
"fps" : {
|
||||
"enabled" : false
|
||||
}
|
||||
},
|
||||
"camera" : {
|
||||
"type" : "CUDA",
|
||||
"cuda" : {
|
||||
"devices" : [
|
||||
{
|
||||
"enabled":true,
|
||||
"name" : "Right Wide Eye",
|
||||
"path" : "/dev/video1",
|
||||
"bufferPoolSize" : 4,
|
||||
"width" : 1280,
|
||||
"height" : 720,
|
||||
"outputBufferFormats" : 0,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"gamma" : {
|
||||
"R" : 0.6,
|
||||
"G" : 0.6,
|
||||
"B" : 0.6
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP" : 0.05,
|
||||
"gainP" : 0.02,
|
||||
"targetY" : 0.25,
|
||||
"errorY" : 0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold" : 0.3,
|
||||
"numSamples" : 1000,
|
||||
"P" : 0.15,
|
||||
"targetU" : 0.505,
|
||||
"targetV" : 0.50,
|
||||
"seed" : 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"enabled":true,
|
||||
"name" : "Left Narrow Eye",
|
||||
"path" : "/dev/video0",
|
||||
"bufferPoolSize" : 4,
|
||||
"width" : 672,
|
||||
"height" : 380,
|
||||
"outputBufferFormats" : 0,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"gamma" : {
|
||||
"R" : 0.6,
|
||||
"G" : 0.6,
|
||||
"B" : 0.6
|
||||
},
|
||||
"ae" : {
|
||||
"exposureP" : 0.05,
|
||||
"gainP" : 0.02,
|
||||
"targetY" : 0.25,
|
||||
"errorY" : 0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold" : 0.3,
|
||||
"numSamples" : 1000,
|
||||
"P" : 0.15,
|
||||
"targetU" : 0.505,
|
||||
"targetV" : 0.50,
|
||||
"seed" : 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"cuda" : {
|
||||
|
||||
}
|
||||
},
|
||||
"file" : {
|
||||
"videos" : [
|
||||
"videos/video-000/video.json",
|
||||
"videos/video-001/video.json"
|
||||
],
|
||||
"format" : "YUV420p"
|
||||
},
|
||||
"v4l2" : {
|
||||
"devices" : {
|
||||
"left" : "/dev/video0",
|
||||
"right" : "/dev/video1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
110
V3.1/build/usr/local/etc/jibo-tts-service.json
Normal file
110
V3.1/build/usr/local/etc/jibo-tts-service.json
Normal file
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"webCore" : {
|
||||
"serverPort": 8089,
|
||||
"fileRoot": "/usr/local/var/www/ttsservice",
|
||||
"requestLogging": false
|
||||
},
|
||||
"TTSService" : {
|
||||
"alsaPlaybackDevice" : "TTSOut",
|
||||
"audioDriver" : "alsa",
|
||||
"effectsDir" : "/usr/local/share/ttsservice/effects",
|
||||
"enableFadeOut" : "FALSE",
|
||||
"enableJiboDefaultSwitch" : "FALSE",
|
||||
"enablePD" : "FALSE",
|
||||
"postToPerformanceService" : "TRUE",
|
||||
"enableTextNorm" : "TRUE",
|
||||
"maxRSSMemory" : 250000,
|
||||
"frontEnd" : "JIBO",
|
||||
"resourcePath" : "/usr/local/share/ttsservice/voices/en_us_world/"
|
||||
},
|
||||
"voiceParams" : {
|
||||
"postFilter_b" : "0.40",
|
||||
"samplerate_s" : "48000",
|
||||
"framerate_p" : "240",
|
||||
"pitchbw_jf" : "0.40",
|
||||
"halftone_fm" : "3",
|
||||
"unvoicedvoice_u" : "0.15",
|
||||
"allPass_a" : "0.76",
|
||||
"gvMCEP_jm" : "0.9",
|
||||
"speed_r" : "1",
|
||||
"mode" : "text",
|
||||
"outmode" : "stream",
|
||||
"mgc_order" : "60",
|
||||
"frontendResource" : "/usr/local/share/ttsservice/voices/en_us/griffin/fsts/",
|
||||
"buffer_size" : "1024",
|
||||
"fft_size" : "1024",
|
||||
"volume_linear" : "0.65",
|
||||
"maxChars" : "1000"
|
||||
},
|
||||
"PostFilterMap" : {
|
||||
"pitchshiftSwitch" : "pitchStrength",
|
||||
"freqshiftSwitch" : "freqshiftAmount",
|
||||
"autotuneSwitch" : "autotunePitch",
|
||||
"vocoderSwitch" : "vocoderChord",
|
||||
"phaserSwitch" : "phaserAmount",
|
||||
"resonatorSwitch" : "resonatorPitch",
|
||||
"ringmodSwitch" : "ringmodFreq",
|
||||
"aliasSwitch" : "aliasAmount",
|
||||
"flangerSwitch" : "flangerAmount",
|
||||
"chorusSwitch" : "chorusAmount",
|
||||
"masteringSwitch" : "masteringAmount",
|
||||
"excitedSwitch" : "excitedAmount",
|
||||
"worriedSwitch" : "worriedAmount",
|
||||
"disapproveSwitch" : "disapproveAmount",
|
||||
"neutralSwitch" : "neutralAmount",
|
||||
"affectionateSwitch" : "affectionateAmount",
|
||||
"sorrowSwitch" : "sorrowAmount",
|
||||
"laughterSwitch" : "laughterAmount",
|
||||
"listSwitch" : "listAmount",
|
||||
"emphasisSwitch" : "emphasisAmount",
|
||||
"fadeSwitch" : "fadeAmount",
|
||||
"makeSimilar" : "makeSimilar",
|
||||
"analysisSwitch" : "analysisSwitch",
|
||||
"oo" : "1",
|
||||
"wow" : "2",
|
||||
"perfect" : "3",
|
||||
"ok" : "4",
|
||||
"ooo" : "5",
|
||||
"ah" : "6",
|
||||
"oh" : "7",
|
||||
"your_welcome" : "8",
|
||||
"cool" : "9",
|
||||
"woo_hoo_hoo" : "10",
|
||||
"laugh" : "11",
|
||||
"laugh2" : "12",
|
||||
"sweet" : "13",
|
||||
"done" : "14",
|
||||
"what" : "15",
|
||||
"aw" : "16",
|
||||
"my_bad" : "17",
|
||||
"oops" : "18",
|
||||
"um" : "19",
|
||||
"huh" : "20",
|
||||
"whoa" : "21",
|
||||
"argh" : "22",
|
||||
"nm_um" : "23",
|
||||
"i_love_to_1" : "24",
|
||||
"i_love_to_2" : "25",
|
||||
"i_love_to_3" : "26",
|
||||
"i_love_to_4" : "27",
|
||||
"i_love_to_5" : "28",
|
||||
"i_love_to_6" : "29",
|
||||
"triggerJibonics" : "bang"
|
||||
},
|
||||
"logging" : {
|
||||
"jibo_message_prefix": "C",
|
||||
"loggers" : {
|
||||
"root": {
|
||||
"level": "warning"
|
||||
},
|
||||
"l1" : {
|
||||
"name" : "TTSService",
|
||||
"level" : "information"
|
||||
},
|
||||
"l2" : {
|
||||
"name" : "Application",
|
||||
"level" : "information"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
168
V3.1/build/usr/local/etc/lps/cameras.json
Normal file
168
V3.1/build/usr/local/etc/lps/cameras.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"type" : "CUDA",
|
||||
"cuda" : {
|
||||
"devices" : [
|
||||
{
|
||||
"enabled" : true,
|
||||
"name" : "Camera-0",
|
||||
"path" : "/dev/video1",
|
||||
"bufferPoolSize" : 10,
|
||||
"width" : 1280,
|
||||
"height" : 720,
|
||||
"outputBufferFormats" : 2,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"gamma" : {
|
||||
"R" : 0.7,
|
||||
"G" : 0.7,
|
||||
"B" : 0.7
|
||||
},
|
||||
"numSamples" : 10000,
|
||||
"ae" : {
|
||||
"exposureP" : 0.02,
|
||||
"gainP" : 0.02,
|
||||
"targetY" : 0.6,
|
||||
"avgYThreshold" : 0.8,
|
||||
"skinSegmentedTargetY" : 0.43,
|
||||
"skinSegmentedAvgYThreshold" : 0.8,
|
||||
"skinRatioThreshold" : 0.010,
|
||||
"numSamples" : 1000,
|
||||
"numRegions" : 64,
|
||||
"errorY" : 0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold" : 0.3,
|
||||
"numSamples" : 1000,
|
||||
"P" : 0.15,
|
||||
"targetU" : 0.505,
|
||||
"targetV" : 0.50,
|
||||
"seed" : 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"enabled" : true,
|
||||
"name" : "Camera-1",
|
||||
"path" : "/dev/video0",
|
||||
"bufferPoolSize" : 4,
|
||||
"width" : 1280,
|
||||
"height" : 720,
|
||||
"outputBufferFormats" : 2,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"gamma" : {
|
||||
"R" : 0.7,
|
||||
"G" : 0.7,
|
||||
"B" : 0.7
|
||||
},
|
||||
"numSamples" : 10000,
|
||||
"ae" : {
|
||||
"exposureP" : 0.02,
|
||||
"gainP" : 0.02,
|
||||
"targetY" : 0.6,
|
||||
"avgYThreshold" : 0.8,
|
||||
"skinSegmentedTargetY" : 0.46,
|
||||
"skinSegmentedAvgYThreshold" : 0.8,
|
||||
"skinRatioThreshold" : 0.010,
|
||||
"numSamples" : 1000,
|
||||
"errorY" : 0.0001
|
||||
},
|
||||
"awb" : {
|
||||
"grayThreshold" : 0.3,
|
||||
"numSamples" : 1000,
|
||||
"P" : 0.15,
|
||||
"targetU" : 0.505,
|
||||
"targetV" : 0.50,
|
||||
"seed" : 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"cuda" : {
|
||||
|
||||
}
|
||||
},
|
||||
"file" : {
|
||||
"videos" : [
|
||||
"videos/video-000/video.json",
|
||||
"videos/video-001/video.json"
|
||||
],
|
||||
"format" : "YUV420p"
|
||||
},
|
||||
"v4l2" : {
|
||||
"devices" : {
|
||||
"left" : "/dev/video0",
|
||||
"right" : "/dev/video1"
|
||||
}
|
||||
},
|
||||
"controls" : [
|
||||
{
|
||||
"width" : 1280,
|
||||
"height" : 720,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"ae" : {
|
||||
"lock" : false,
|
||||
"manual" : false,
|
||||
"time" : {
|
||||
"low" : 0.0016667,
|
||||
"high" : 0.033
|
||||
},
|
||||
"regions" : [],
|
||||
"targetY" : 0.4,
|
||||
"manualMode" : "default",
|
||||
"manualExposure" : 0.03333,
|
||||
"manualGain" : 1,
|
||||
"ev" : 0
|
||||
},
|
||||
"outputBuffers" : [],
|
||||
"outputBuffersConfIndex" : 2,
|
||||
"awb" : {
|
||||
"lock" : false,
|
||||
"manual" : false,
|
||||
"gammaRed" : 0.7,
|
||||
"gammaGreen" : 0.7,
|
||||
"gammaBlue" : 0.7,
|
||||
"regions" : [],
|
||||
"manualRedGain" : 1024,
|
||||
"manualGreenGain" : 1024,
|
||||
"manualBlueGain" : 1024,
|
||||
"gammaCr" : 0.78,
|
||||
"gammaCb" : 0.78
|
||||
}
|
||||
},
|
||||
{
|
||||
"width" : 1280,
|
||||
"height" : 720,
|
||||
"hFlip" : true,
|
||||
"vFlip" : true,
|
||||
"ae" : {
|
||||
"lock" : false,
|
||||
"manual" : false,
|
||||
"time" : {
|
||||
"low" : 0.0016667,
|
||||
"high" : 0.033
|
||||
},
|
||||
"regions" : [],
|
||||
"targetY" : 0.4,
|
||||
"manualMode" : "default",
|
||||
"manualExposure" : 0.03333,
|
||||
"manualGain" : 1,
|
||||
"ev" : 0
|
||||
},
|
||||
"outputBuffers" : [],
|
||||
"outputBuffersConfIndex" : 2,
|
||||
"awb" : {
|
||||
"lock" : false,
|
||||
"manual" : false,
|
||||
"gammaRed" : 0.7,
|
||||
"gammaGreen" : 0.7,
|
||||
"gammaBlue" : 0.7,
|
||||
"regions" : [],
|
||||
"manualRedGain" : 1024,
|
||||
"manualGreenGain" : 1024,
|
||||
"manualBlueGain" : 1024,
|
||||
"gammaCr" : 0.78,
|
||||
"gammaCb" : 0.78
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
318
V3.1/build/usr/local/etc/lps/entityConfig.json
Normal file
318
V3.1/build/usr/local/etc/lps/entityConfig.json
Normal file
@@ -0,0 +1,318 @@
|
||||
{
|
||||
"default_person" : {
|
||||
"debug" : false,
|
||||
"description" : "person",
|
||||
"name" : "person",
|
||||
"max_track_age" : 300.0,
|
||||
"is_static" : false,
|
||||
"min_part_confidence" : 0.001,
|
||||
"max_part_measure_age" : 5.0,
|
||||
"max_audio_measure_age" : 10.0,
|
||||
"min_audio_confidence" : 0.4,
|
||||
"out_fov_age_factor" : 1.5,
|
||||
"in_fov_margin" : 0.10,
|
||||
"min_detect_request_age" : 5.0,
|
||||
"speaking_timeout" : 1.5,
|
||||
"speaking_threshold" : 0.25,
|
||||
"head" : {
|
||||
"name" : "head",
|
||||
"debug" : false,
|
||||
"identity" : {
|
||||
"alpha" : 0.75,
|
||||
"cull" : 0.1
|
||||
},
|
||||
"enable_back_projection" : true,
|
||||
"default_ramge" : 2.5,
|
||||
"use_pseudo_range" : true,
|
||||
"extent_x" : 0.25,
|
||||
"extent_y" : 0.25,
|
||||
"extent_z" : 0.25,
|
||||
"vel_decay" : 0.5,
|
||||
"vel_max" : 1.9,
|
||||
"linear_psd" : 10.0,
|
||||
"min_state_covariance" : 0.0001,
|
||||
"pseudo_range_covariance" : 0.9,
|
||||
"auto_add_tracker" : false,
|
||||
"auto_add_tracker_skip" : 20,
|
||||
"pose_filter":0.0,
|
||||
"tracker_type" : "tracker_2",
|
||||
"tracker_1" : {
|
||||
"tracker_class" : "color_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 640,
|
||||
"image_height" : 360,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"color_tracker" : {
|
||||
"model_debug" : false,
|
||||
"track_debug" : false,
|
||||
"drop_area_too_big" : 120000.0,
|
||||
"drop_area_too_small" : 600.0,
|
||||
"search_size_horizontal_scale" : 20,
|
||||
"search_size_vertical_scale" : 20,
|
||||
"area_filter" : 0.6,
|
||||
"model" : {
|
||||
"y_min" : 25,
|
||||
"y_max" : 250,
|
||||
"color_threshold_min" : 10,
|
||||
"color_threshold_max" : 25
|
||||
},
|
||||
"camshift" : {
|
||||
"max_iterations" : 6,
|
||||
"area_scale" : 10.0,
|
||||
"area_aspect" : 1.2
|
||||
},
|
||||
"kmeans" : {
|
||||
"K" : 2,
|
||||
"max_iterations" : 10,
|
||||
"convergence" : 0.01
|
||||
}
|
||||
}
|
||||
},
|
||||
"tracker_2" : {
|
||||
"tracker_class" : "abcshift_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 640,
|
||||
"image_height" : 360,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"abcshift_tracker" : {
|
||||
"drop_area_too_big" : 120000.0,
|
||||
"drop_area_too_small" : 600.0,
|
||||
"search_size_horizontal_scale" : 20,
|
||||
"search_size_vertical_scale" : 20,
|
||||
"area_filter" : 0.6,
|
||||
"max_iterations" : 6,
|
||||
"area_scale" : 1.3,
|
||||
"area_aspect" : 1.2,
|
||||
"bhattacharyya_threshold" : 0.5,
|
||||
"model" : {
|
||||
"y_min" : 5,
|
||||
"y_max" : 250,
|
||||
"color_threshold_min" : 5,
|
||||
"color_threshold_max" : 10
|
||||
},
|
||||
"background" : {
|
||||
"minX" : 0,
|
||||
"maxX" : 255,
|
||||
"binsX" : 256,
|
||||
"minY" : 0,
|
||||
"maxY" : 255,
|
||||
"binsY" : 256
|
||||
},
|
||||
"foreground" : {
|
||||
"minX" : 0,
|
||||
"maxX" : 255,
|
||||
"binsX" : 256,
|
||||
"minY" : 0,
|
||||
"maxY" : 255,
|
||||
"binsY" : 256
|
||||
}
|
||||
}
|
||||
},
|
||||
"tracker_3" : {
|
||||
"tracker_class" : "correlation_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 640,
|
||||
"image_height" : 360,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"correlation_tracker" : {
|
||||
"filter_size" : 6,
|
||||
"num_scale_levels" : 5,
|
||||
"scale_window_size" : 23,
|
||||
"regularizer_space" : 0.001,
|
||||
"nu_space" : 0.025,
|
||||
"regularizer_scale" : 0.001,
|
||||
"nu_scale" : 0.025,
|
||||
"scale_pyramid_alpha" : 1.020,
|
||||
"side_lobe_ratio_threshold": 12.0
|
||||
}
|
||||
},
|
||||
"tracker_4" : {
|
||||
"tracker_class" : "face_landmark_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 640,
|
||||
"image_height" : 360,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"face_landmark_tracker" : { }
|
||||
},
|
||||
"tracker_5" : {
|
||||
"tracker_class" : "composite_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 1280,
|
||||
"image_height" : 720,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"composite_tracker" : {
|
||||
"trackers" : {
|
||||
"color" : {
|
||||
"tracker_class" : "abcshift_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : true,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 220.0,
|
||||
"image_width" : 640,
|
||||
"image_height" : 360,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.9,
|
||||
"min_confidence" : 0.05,
|
||||
"measure_interval": 0.067
|
||||
},
|
||||
"abcshift_tracker" : {
|
||||
"drop_area_too_big" : 120000.0,
|
||||
"drop_area_too_small" : 600.0,
|
||||
"search_size_horizontal_scale" : 20,
|
||||
"search_size_vertical_scale" : 20,
|
||||
"area_filter" : 0.6,
|
||||
"max_iterations" : 6,
|
||||
"area_scale" : 1.3,
|
||||
"area_aspect" : 1.2,
|
||||
"bhattacharyya_threshold" : 0.5,
|
||||
"model" : {
|
||||
"y_min" : 5,
|
||||
"y_max" : 250,
|
||||
"color_threshold_min" : 5,
|
||||
"color_threshold_max" : 25
|
||||
},
|
||||
"background" : {
|
||||
"minX" : 0,
|
||||
"maxX" : 255,
|
||||
"binsX" : 64,
|
||||
"minY" : 0,
|
||||
"maxY" : 255,
|
||||
"binsY" : 64
|
||||
},
|
||||
"foreground" : {
|
||||
"minX" : 0,
|
||||
"maxX" : 255,
|
||||
"binsX" : 64,
|
||||
"minY" : 0,
|
||||
"maxY" : 255,
|
||||
"binsY" : 64
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"default_motion" : {
|
||||
"debug" : false,
|
||||
"description" : "motion",
|
||||
"name" : "motion",
|
||||
"max_track_age" : 20.0,
|
||||
"is_static" : false,
|
||||
"max_part_measure_age" : 1.0,
|
||||
"max_audio_measure_age" : 0.1,
|
||||
"out_fov_age_factor" : 0.1,
|
||||
"motion" : {
|
||||
"name" : "motion",
|
||||
"debug" : false,
|
||||
"enable_back_projection" : true,
|
||||
"default_ramge" : 2.5,
|
||||
"use_pseudo_range" : true,
|
||||
"extent_x" : 0.25,
|
||||
"extent_y" : 0.25,
|
||||
"extent_z" : 0.25,
|
||||
"vel_decay" : 0.999,
|
||||
"vel_limit" : 3.0,
|
||||
"linear_psd" : 0.10,
|
||||
"min_state_covariance" : 0.001,
|
||||
"pseudo_range_covariance" : 0.5,
|
||||
"fixed_pseudo_range" : 2.0,
|
||||
"auto_add_tracker" : false,
|
||||
"auto_add_tracker_skip" : 5,
|
||||
"confidence_filter" : 0.9,
|
||||
"pose_filter":0.0,
|
||||
"tracker_type" : "tracker_1",
|
||||
"tracker_1" : {
|
||||
"tracker_class" : "motion_tracker",
|
||||
"image_tracker" : {
|
||||
"debug" : false,
|
||||
"image_debug" : false,
|
||||
"name" : "A",
|
||||
"use_image_velocity" : false,
|
||||
"vel_scale" : 0.9,
|
||||
"vel_filter" : 0.75,
|
||||
"base_covar" : 200.0,
|
||||
"image_width" : 128,
|
||||
"image_height" : 128,
|
||||
"track_confidence_filter" : 0.6,
|
||||
"model_confidence_filter" : 0.5,
|
||||
"min_confidence" : 0.001,
|
||||
"measure_interval": 0.001
|
||||
},
|
||||
"motion_tracker" : {
|
||||
"background_threshold" : 5,
|
||||
"drop_area_too_big" : 1600.0,
|
||||
"drop_area_too_small" : 100.0,
|
||||
"search_size_horizontal_scale" : 5,
|
||||
"search_size_vertical_scale" : 5,
|
||||
"camshift" : {
|
||||
"max_iterations" : 6,
|
||||
"area_scale" : 3.0,
|
||||
"area_aspect" : 2.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
475
V3.1/build/usr/local/etc/lps/schemas/focused.json
Normal file
475
V3.1/build/usr/local/etc/lps/schemas/focused.json
Normal file
@@ -0,0 +1,475 @@
|
||||
{
|
||||
"schemas" :[
|
||||
{
|
||||
"name" : "FaceDetectSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_detection_predicate",
|
||||
"enable" : true,
|
||||
"start" : 0,
|
||||
"skip_with_tracks" : 150,
|
||||
"skip_without_tracks" : 10,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0]
|
||||
}
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceDetectAction",
|
||||
"type" : "face_detection_action",
|
||||
"enable" : true,
|
||||
"policy_detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [
|
||||
{ "width" : 640, "height" : 360 },
|
||||
{ "width" : 80, "height" : 45 }
|
||||
],
|
||||
"formats" : [3, 1],
|
||||
"outputTypes" : [0, 2]
|
||||
},
|
||||
"detector" : {
|
||||
"min_hint_width" : 40,
|
||||
"min_hint_height" : 40
|
||||
},
|
||||
"policies" : [
|
||||
{
|
||||
"weight": 0.75,
|
||||
"kind": "skincolor",
|
||||
"sub_image_width" : 200,
|
||||
"sub_image_height" : 200,
|
||||
"extra_horizontal" : 20,
|
||||
"extra_vertical" : 20
|
||||
},
|
||||
{
|
||||
"weight": 0.25,
|
||||
"kind": "gaussian",
|
||||
"sub_image_width" : 200,
|
||||
"sub_image_height" : 200,
|
||||
"extra_horizontal" : 20,
|
||||
"extra_vertical" : 20
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackerInitAction",
|
||||
"type" : "face_tracker_init_action",
|
||||
"enable" : true,
|
||||
"max_tracked" : 1
|
||||
},
|
||||
{
|
||||
"name" : "FaceRecognitionAction",
|
||||
"type" : "face_recognition_action",
|
||||
"enable" : true,
|
||||
"turn_threshold" : 0.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrackerUpdate",
|
||||
"type" : "face_tracker_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackPoseEstimateSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : false,
|
||||
"predicate" : {
|
||||
"type" : "face_tracker_pose_estimate_predicate",
|
||||
"enable" : true,
|
||||
"start" : 4,
|
||||
"skip" : 11
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrackerPoseEstimate",
|
||||
"type" : "face_tracker_pose_estimate_action",
|
||||
"enable" : true,
|
||||
"hflip" : true,
|
||||
"vflip" : false,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"min_hint_width" : 80,
|
||||
"min_hint_height" : 80
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackReevaluateSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_reevaluate_predicate",
|
||||
"enable" : true,
|
||||
"start" : 0,
|
||||
"skip" : 89
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrackerRedetectAction",
|
||||
"type" : "face_tracker_redetect_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"min_hint_width" : 80,
|
||||
"min_hint_height" : 80
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrainSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_training_predicate",
|
||||
"enable" : true,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0]
|
||||
}
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrainingAction",
|
||||
"type" : "face_training_action",
|
||||
"enable" : true,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "EntityDetailSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "EntityDetailAction",
|
||||
"type" : "entity_detail_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "VisualAwarenessSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" : [
|
||||
{
|
||||
"name" : "VisualAwarenessUpdateAction",
|
||||
"type" : "visual_awareness_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "BarcodeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "BarcodeRequestAction",
|
||||
"type" : "barcode_request_action",
|
||||
"enable" : true,
|
||||
"reader":{
|
||||
"types": {
|
||||
"EAN8" : false,
|
||||
"UPCE" : false,
|
||||
"ISBN10" : false,
|
||||
"UPCA" : false,
|
||||
"EAN13" : false,
|
||||
"ISBN13" : false,
|
||||
"I25" : false,
|
||||
"CODE39" : false,
|
||||
"PDF417" : false,
|
||||
"QRCODE" : true,
|
||||
"CODE128" : false
|
||||
}
|
||||
},
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "ControlChangeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable": true,
|
||||
"actions": [
|
||||
{
|
||||
"name" : "ControlChangeRequestAction",
|
||||
"type" : "control_change_request_action",
|
||||
"enable" : true,
|
||||
"defaultResetTimeout": 7000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "MotionSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "MotionImagerAction",
|
||||
"type" : "motion_imager_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"image_width" : 128,
|
||||
"image_height" : 128,
|
||||
"accumulator_alpha" : 0.75,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 320, "height" : 180 }],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"motion_timeout" : 100
|
||||
},
|
||||
{
|
||||
"name" : "MotionDetectionAction",
|
||||
"type" : "motion_detection_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"detector": {
|
||||
"min_width" : 10,
|
||||
"min_height" : 10,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0]
|
||||
},
|
||||
"threshold" : {
|
||||
"dynamic": true,
|
||||
"low": 5,
|
||||
"high": 50,
|
||||
"ae":{
|
||||
"gain":16.0,
|
||||
"time":0.0333
|
||||
},
|
||||
"awb":{
|
||||
"red":4.0,
|
||||
"green":4.0,
|
||||
"blue": 4.0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerInitAction",
|
||||
"type" : "motion_tracker_init_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"max_tracked" : 2,
|
||||
"pool" : {
|
||||
"format" : 1,
|
||||
"width" : 128,
|
||||
"height" : 128,
|
||||
"size" : 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerUpdateAction",
|
||||
"type" : "motion_tracker_update_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"pool" : {
|
||||
"format" : 1,
|
||||
"width" : 128,
|
||||
"height" : 128,
|
||||
"size" : 8
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTimeAction",
|
||||
"type" : "face_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius" : 4.0,
|
||||
"ceiling_height": 2.0,
|
||||
"floor_height": -2.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceEvaluateTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "min_period_predicate",
|
||||
"enable" : true,
|
||||
"min_period" : 1.1
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PersonEvaluationAction",
|
||||
"type" : "person_evaluation_action",
|
||||
"enable" : true,
|
||||
"unknown_age_limit":1.5,
|
||||
"not_trained_age_limit":20.0,
|
||||
"refresh_limit":50.0
|
||||
},
|
||||
{
|
||||
"name" : "PresenceTimeAction",
|
||||
"type" : "presence_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "SpeakerTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "SpeakerTimeAction",
|
||||
"type" : "speaker_time_action",
|
||||
"enable" : true,
|
||||
"expiration": 60000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AwarenessTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AwarenessTimeAction",
|
||||
"type" : "awareness_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "MotionTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "MotionTimeAction",
|
||||
"type" : "motion_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius" : 4.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioTimeAction",
|
||||
"type" : "audio_time_action",
|
||||
"enable" : true,
|
||||
"event_timeout" : 5.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "PresenceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PresenceTimeAction",
|
||||
"type" : "presence_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioDetectSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioDetectionAction",
|
||||
"type" : "audio_detection_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "AudioMeasurementAction",
|
||||
"type" : "audio_measurement_action",
|
||||
"enable" : true,
|
||||
"audio_angle_tolerance" : 0.5,
|
||||
"audio_time_tolerance" : 0.35,
|
||||
"in_fov_margin" : 0.1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioAwarenessSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioAwarenessAction",
|
||||
"type" : "audio_awareness_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AxisUpdateSchema",
|
||||
"type" : "axis_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "GeometryUpdateAction",
|
||||
"type" : "geometry_update_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerAxisUpdateAction",
|
||||
"type" : "motion_tracker_axis_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
212
V3.1/build/usr/local/etc/lps/schemas/minimal.json
Normal file
212
V3.1/build/usr/local/etc/lps/schemas/minimal.json
Normal file
@@ -0,0 +1,212 @@
|
||||
{
|
||||
"schemas" :[
|
||||
{
|
||||
"name" : "EntityDetailSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "EntityDetailAction",
|
||||
"type" : "entity_detail_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "VisualAwarenessSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" : [
|
||||
{
|
||||
"name" : "VisualAwarenessUpdateAction",
|
||||
"type" : "visual_awareness_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "BarcodeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "BarcodeRequestAction",
|
||||
"type" : "barcode_request_action",
|
||||
"enable" : true,
|
||||
"reader":{
|
||||
"types": {
|
||||
"EAN8" : false,
|
||||
"UPCE" : false,
|
||||
"ISBN10" : false,
|
||||
"UPCA" : false,
|
||||
"EAN13" : false,
|
||||
"ISBN13" : false,
|
||||
"I25" : false,
|
||||
"CODE39" : false,
|
||||
"PDF417" : false,
|
||||
"QRCODE" : true,
|
||||
"CODE128" : false
|
||||
}
|
||||
},
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "ControlChangeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable": true,
|
||||
"actions": [
|
||||
{
|
||||
"name" : "ControlChangeRequestAction",
|
||||
"type" : "control_change_request_action",
|
||||
"enable" : true,
|
||||
"defaultResetTimeout": 7000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTimeAction",
|
||||
"type" : "face_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius" : 4.0,
|
||||
"ceiling_height": 2.0,
|
||||
"floor_height": -2.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AwarenessTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AwarenessTimeAction",
|
||||
"type" : "awareness_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "MotionTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "MotionTimeAction",
|
||||
"type" : "motion_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius" : 4.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioTimeAction",
|
||||
"type" : "audio_time_action",
|
||||
"enable" : true,
|
||||
"event_timeout" : 5.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "PresenceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PresenceTimeAction",
|
||||
"type" : "presence_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioDetectSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioDetectionAction",
|
||||
"type" : "audio_detection_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "AudioMeasurementAction",
|
||||
"type" : "audio_measurement_action",
|
||||
"enable" : true,
|
||||
"audio_angle_tolerance" : 0.5,
|
||||
"audio_time_tolerance" : 0.35,
|
||||
"in_fov_margin" : 0.1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioPresenceSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "SpeakerPresenceAudioAction",
|
||||
"type" : "speaker_presence_audio_action",
|
||||
"enable" : true,
|
||||
"audio_angle_tolerance" : 0.5,
|
||||
"audio_time_tolerance" : 0.35,
|
||||
"in_fov_margin" : 0.1,
|
||||
"presence_timeout" : 10.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioAwarenessSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioAwarenessAction",
|
||||
"type" : "audio_awareness_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AxisUpdateSchema",
|
||||
"type" : "axis_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "GeometryUpdateAction",
|
||||
"type" : "geometry_update_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerAxisUpdateAction",
|
||||
"type" : "motion_tracker_axis_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
495
V3.1/build/usr/local/etc/lps/schemas/normal.json
Normal file
495
V3.1/build/usr/local/etc/lps/schemas/normal.json
Normal file
@@ -0,0 +1,495 @@
|
||||
{
|
||||
"schemas" :[
|
||||
{
|
||||
"name" : "FaceDetectSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_detection_predicate",
|
||||
"enable" : true,
|
||||
"start" : 0,
|
||||
"skip_with_tracks" : 30,
|
||||
"skip_without_tracks" : 10,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0]
|
||||
}
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceDetectAction",
|
||||
"type" : "face_detection_action",
|
||||
"enable" : true,
|
||||
"policy_detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [
|
||||
{ "width" : 1280, "height" : 720 },
|
||||
{ "width" : 80, "height" : 45 }
|
||||
],
|
||||
"formats" : [3, 1],
|
||||
"outputTypes" : [0, 2]
|
||||
},
|
||||
"detector" : {
|
||||
"min_hint_width" : 40,
|
||||
"min_hint_height" : 40
|
||||
},
|
||||
"policies" : [
|
||||
{
|
||||
"weight": 0.75,
|
||||
"kind": "skincolor",
|
||||
"sub_image_width" : 200,
|
||||
"sub_image_height" : 200,
|
||||
"extra_horizontal" : 20,
|
||||
"extra_vertical" : 20
|
||||
},
|
||||
{
|
||||
"weight": 0.25,
|
||||
"kind": "gaussian",
|
||||
"sub_image_width" : 200,
|
||||
"sub_image_height" : 200,
|
||||
"extra_horizontal" : 20,
|
||||
"extra_vertical" : 20
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackerInitAction",
|
||||
"type" : "face_tracker_init_action",
|
||||
"enable" : true,
|
||||
"max_tracked" : 3
|
||||
},
|
||||
{
|
||||
"name": "FaceTrackerIDAction",
|
||||
"type": "face_tracker_id_action",
|
||||
"enable": true,
|
||||
"criteria": {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrackerUpdate",
|
||||
"type" : "face_tracker_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackPoseEstimateSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : false,
|
||||
"predicate" : {
|
||||
"type" : "face_tracker_pose_estimate_predicate",
|
||||
"enable" : true,
|
||||
"start" : 4,
|
||||
"skip" : 11
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrackerPoseEstimate",
|
||||
"type" : "face_tracker_pose_estimate_action",
|
||||
"enable" : true,
|
||||
"hflip" : true,
|
||||
"vflip" : false,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"min_hint_width" : 80,
|
||||
"min_hint_height" : 80
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrackRedetectSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_reevaluate_predicate",
|
||||
"enable" : true,
|
||||
"start" : 0,
|
||||
"skip" : 3
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PersonRedetectAction",
|
||||
"type" : "person_redetect_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"min_hint_width" : 80,
|
||||
"min_hint_height" : 80
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "DeferredDetectSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "DeferredDetectionAction",
|
||||
"type" : "deferred_detection_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"min_hint_width" : 80,
|
||||
"min_hint_height" : 80
|
||||
},
|
||||
"max_tracked": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTrainSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "face_training_predicate",
|
||||
"enable" : true
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTrainingAction",
|
||||
"type" : "face_training_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "EntityDetailSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "EntityDetailAction",
|
||||
"type" : "entity_detail_action",
|
||||
"enable" : true,
|
||||
"detector" : {
|
||||
"criteria" : {
|
||||
"dimensions" : [{ "width" : 640, "height" : 360 }],
|
||||
"formats" : [3],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "VisualAwarenessSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" : [
|
||||
{
|
||||
"name" : "VisualAwarenessUpdateAction",
|
||||
"type" : "visual_awareness_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "BarcodeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "BarcodeRequestAction",
|
||||
"type" : "barcode_request_action",
|
||||
"enable" : true,
|
||||
"reader":{
|
||||
"types": {
|
||||
"EAN8" : false,
|
||||
"UPCE" : false,
|
||||
"ISBN10" : false,
|
||||
"UPCA" : false,
|
||||
"EAN13" : false,
|
||||
"ISBN13" : false,
|
||||
"I25" : false,
|
||||
"CODE39" : false,
|
||||
"PDF417" : false,
|
||||
"QRCODE" : true,
|
||||
"CODE128" : false
|
||||
}
|
||||
},
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 1280, "height" : 720 }],
|
||||
"outputTypes" : [0]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "ControlChangeSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable": true,
|
||||
"actions": [
|
||||
{
|
||||
"name" : "ControlChangeRequestAction",
|
||||
"type" : "control_change_request_action",
|
||||
"enable" : true,
|
||||
"defaultResetTimeout": 7000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "MotionSchema",
|
||||
"type" : "image_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "MotionImagerAction",
|
||||
"type" : "motion_imager_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"image_width" : 128,
|
||||
"image_height" : 128,
|
||||
"accumulator_alpha" : 0.75,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0],
|
||||
"dimensions" : [{ "width" : 320, "height" : 180 }],
|
||||
"outputTypes" : [0]
|
||||
},
|
||||
"motion_timeout" : 100
|
||||
},
|
||||
{
|
||||
"name" : "MotionDetectionAction",
|
||||
"type" : "motion_detection_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"detector": {
|
||||
"min_width" : 10,
|
||||
"min_height" : 10,
|
||||
"criteria" : {
|
||||
"cameraIds" : [0]
|
||||
},
|
||||
"threshold" : {
|
||||
"dynamic": true,
|
||||
"low": 5,
|
||||
"high": 50,
|
||||
"ae":{
|
||||
"gain":16.0,
|
||||
"time":0.0333
|
||||
},
|
||||
"awb":{
|
||||
"red":4.0,
|
||||
"green":4.0,
|
||||
"blue": 4.0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerInitAction",
|
||||
"type" : "motion_tracker_init_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"max_tracked" : 3,
|
||||
"pool" : {
|
||||
"format" : 1,
|
||||
"width" : 128,
|
||||
"height" : 128,
|
||||
"size" : 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerUpdateAction",
|
||||
"type" : "motion_tracker_update_action",
|
||||
"enable" : true,
|
||||
"moving_delay" : 400,
|
||||
"pool" : {
|
||||
"format" : 1,
|
||||
"width" : 128,
|
||||
"height" : 128,
|
||||
"size" : 8
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "FaceTimeAction",
|
||||
"type" : "face_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius": 4.0,
|
||||
"ceiling_height": 2.0,
|
||||
"floor_height": -2.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "FaceEvaluateTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"predicate" : {
|
||||
"type" : "min_period_predicate",
|
||||
"enable" : true,
|
||||
"min_period" : 1.1
|
||||
},
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PersonEvaluationAction",
|
||||
"type" : "person_evaluation_action",
|
||||
"enable" : true,
|
||||
"unknown_age_limit":10.0,
|
||||
"not_trained_age_limit":20.0,
|
||||
"refresh_limit":50.0
|
||||
},
|
||||
{
|
||||
"name" : "PresenceTimeAction",
|
||||
"type" : "presence_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "SpeakerTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "SpeakerTimeAction",
|
||||
"type" : "speaker_time_action",
|
||||
"enable" : true,
|
||||
"expiration": 60000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AwarenessTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AwarenessTimeAction",
|
||||
"type" : "awareness_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "MotionTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "MotionTimeAction",
|
||||
"type" : "motion_time_action",
|
||||
"enable" : true,
|
||||
"drop_radius" : 0.3,
|
||||
"fence_radius": 4.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioTimeAction",
|
||||
"type" : "audio_time_action",
|
||||
"enable" : true,
|
||||
"event_timeout" : 5.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "PresenceTimeSchema",
|
||||
"type" : "time_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "PresenceTimeAction",
|
||||
"type" : "presence_time_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioDetectSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioDetectionAction",
|
||||
"type" : "audio_detection_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "AudioMeasurementAction",
|
||||
"type" : "audio_measurement_action",
|
||||
"enable" : true,
|
||||
"audio_angle_tolerance" : 0.5,
|
||||
"audio_time_tolerance" : 0.35,
|
||||
"in_fov_margin" : 0.1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AudioAwarenessSchema",
|
||||
"type" : "audio_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "AudioAwarenessAction",
|
||||
"type" : "audio_awareness_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "AxisUpdateSchema",
|
||||
"type" : "axis_update_schema",
|
||||
"enable" : true,
|
||||
"actions" :[
|
||||
{
|
||||
"name" : "GeometryUpdateAction",
|
||||
"type" : "geometry_update_action",
|
||||
"enable" : true
|
||||
},
|
||||
{
|
||||
"name" : "MotionTrackerAxisUpdateAction",
|
||||
"type" : "motion_tracker_axis_update_action",
|
||||
"enable" : true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
1
V3.1/mode.json
Normal file
1
V3.1/mode.json
Normal file
@@ -0,0 +1 @@
|
||||
{"mode": "normal"}
|
||||
BIN
openjibos.png
Normal file
BIN
openjibos.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 183 KiB |
Reference in New Issue
Block a user