forked from Jibo-Revival-Group/JiboOs
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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!
|
||||
|
||||
- - -
|
||||
|
||||
@@ -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":{
|
||||
@@ -26,17 +26,34 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "new",
|
||||
"label": "What's new",
|
||||
"colors": ["0xFF892F", "0xAF4123"],
|
||||
"iconSrc": "resources/icons/tips.png",
|
||||
"id": "introduction",
|
||||
"label": "Introduction",
|
||||
"colors": ["0x25F2FB", "0x107799"],
|
||||
"iconSrc": "resources/icons/introduction.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "new"
|
||||
"destination": "introductions"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "things-to-do",
|
||||
"label": "Things to do",
|
||||
"colors": ["0xff892f", "0x282735"],
|
||||
"iconSrc": "resources/icons/things-to-do.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "friendly-tips"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,6 +93,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 +195,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bot-basics",
|
||||
"label": "Bot Basics (Broken)",
|
||||
"colors": ["0xFF892F", "0xAF4123"],
|
||||
"iconSrc": "resources/icons/tips.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "tutorial"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings",
|
||||
"label": "Settings",
|
||||
@@ -177,6 +228,23 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "new",
|
||||
"label": "What's new",
|
||||
"colors": ["0xFF892F", "0xAF4123"],
|
||||
"iconSrc": "resources/icons/tips.png",
|
||||
"action": {
|
||||
"type": "utterance",
|
||||
"data": {
|
||||
"utterance": {
|
||||
"intent": "loadMenu",
|
||||
"entities": {
|
||||
"destination": "new"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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'/> dont 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,7 @@ const logs = require("../log");
|
||||
const log = logs.listenLog;
|
||||
const USE_CENTER_ROBOT = false;
|
||||
const TIMEOUT = 3000;
|
||||
const ENGAGE_HJ_FAILSAFE_TIMEOUT_MS = 6000;
|
||||
const ANIM_CLEAR_TIMEOUT = 'ANIM_CLEAR_TIMEOUT';
|
||||
class EmbodiedListen extends jibo_state_machine_1.StateMachine {
|
||||
constructor(_ed) {
|
||||
@@ -820,9 +865,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 +919,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 +951,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;
|
||||
|
||||
Reference in New Issue
Block a user