QiChat의 변수 참조 타이밍을 살펴보기

Pepper에서는 QiChat Script이라는 대화에 특화된 독자적인 스크립팅 언어로 인간과 Pepper의 대화를 구현할 수 있습니다.

커뮤니티에 게시되었습니다. 라고 생각해 문서를 대충 보았지만, 그러한 문장은 발견되지 않았다. 간단한 범위에서 동작 확인해 보았으므로 메모.

실험 내용



실험에 사용한 파일은 GitHub ALMemory 저장 및 획득 타이밍이 맞지 않음의 VariablesTest에 있습니다.

애니메이션 전후에 변수를 참조하는 경우, 어떤 시점에서 변수가 참조되는지 확인하기 위해,
  • 메모리에 0.1초마다 1 증가하는 변수 MyCount htps : // 기주 b. 코 m / 얏친 1205 / ぺぺ r ぢ あぉ g

  • MyCount를 애니메이션 전후에 말할 수있는 QiChat 규칙을 작성
    u:(アニメーション) 今は $MyCount ですよ。^mode(disabled) 1つめのアニメーションしますね。 ^run(animations/Stand/Gestures/Hey_1) 1つめのアニメーション終了後は $MyCount ですよ。2つめのアニメーションしますね。 ^run(animations/Stand/Gestures/Explain_11) 2つめのアニメーション終了後は $MyCount ですよ。
    

  • 같은 처리를 준비해 보았습니다.

    결과



    각각 animations/Stand/Gestures/Hey_1
    ロボット:今は57ですよ。1つめのアニメーションしますね。 1つめのアニメーション終了後は57ですよ。2つめのアニメーションしますね。 2つめのアニメーション終了後は57ですよ。
    

    라고, 다이얼로그 뷰에 표시되어, 위의 내용으로 Pepper가 모션 재생을 행하면서 말을 걸었습니다.

    여러 번 동작을 확인했지만 animations/Stand/Gestures/Explain_11의 값은 애니메이션 전후에 동일한 값이되었습니다. 이것은, u:의 룰에 매치했을 때에, 출력중의 모든 변수가 옮겨놓고 있는 것이라고 생각됩니다.

    API 관점에서 $MyCount는 ALDialog가 지원하는 기법이고 $変数는 ALAnimatedSpeech가 지원하는 기법이지만 아마도 ALDialog는 ALAnimatedSpeech에 대한 설명에 관계없이 ^run 책임분만의 처리를 행하고, 나머지는 ALAnimatedSpeech에 위양해, $変数 의 해석, 실행은 ALAnimatedSpeech의 책임으로 행해진다고 하는 분담으로 행해지고 있는 것처럼 보입니다.

    QiChat는 ^run 와 같은 기술을 할 수 있고, 출력내에서 간단한 로직을 쓸 수 있을 것 같기 때문에, 한순간 「?」라고 하는 동작이지만, 이것은 이것으로 사양으로서 타당성이 있을 것 같습니다 . 라고 하는 것도, 자주 있는 변수 참조의 용도로서,
    u:(e:イベント) $イベント
    

    같은 느낌으로, 이벤트를 훅하고 그 값을 말하는 등의 기술이 있는 것입니다만 . 값을 참조해 주는 쪽이 의도하지 않는 동작을 일으키기 어렵게도 생각하기 때문에・・・

    변수 설정에 대해서도 조사했습니다만, 시간을 보고 또 결과를 씁니다.

    좋은 웹페이지 즐겨찾기