javascript - Pepper 在程序运行期间崩溃

标签 javascript html nao-robot pepper choregraphe

我正在创建这个应用程序,其中 Pepper 在其平板电脑上显示一些可点击的图片。通过点击图片,用户会让 Pepper 做一些手势。这是我创建的 Choregraphe 文件:enter image description here

这是我正在使用的相应的 JS 和 HTML 文件:

// keeping a pointer to the session is very useful!
var session;

try {
  QiSession(function(s) {
    console.log('connected!');
    session = s;
  });
} catch (err) {
  console.log("Error when initializing QiSession: " + err.message);
  console.log("Make sure you load this page from the robots server.")
}


function addUser(data) {
  session.service('ALMemory').then(function(memory) {
    memory.raiseEvent('My_App/gesture', data)
  }, function(error) {
    console.log(error);
  })
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap.min.css">
  <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css">
  <link rel="stylesheet" href="lib/font-awesome-4.7.0/css/font-awesome.min.css">
  <!-- application css -->

  <title> Gesture application </title>
  <style>
    div.gallery {
      margin-left: 40px;
      border: 1px none #ccc;
      float: left;
      padding-left: 5px;
    }
    
    div.gallery img {
      padding: 5px;
      padding-bottom: 20px;
      width: 260px;
      height: auto;
      align: center;
    }
    
    div.desc {
      padding-bottom: 20px;
      text-align: center;
      font-weight: bold;
      font-size: 150%;
    }
  </style>
</head>

<body>

  <div class="page-header">
    <div class="row">
      <div class="col-sm-6 text-left"><img src="logo.png" width="200"></div>
      <div class="col-sm-6 text-right"><img src="logo.png" width="200"></div>
      <h1 align="center"> Pepper-Animation </h1>

    </div>
  </div>

  <div class='gallery'>
    <img src="aufwachen.JPG" alt="Mountain View" onclick="addUser('aufwachen')">
    <div class="desc">Aufwachen </div>
  </div>
  <div class='gallery'>
    <img src="confused.JPG" alt="Mountain View2" onclick="addUser('confused')">
    <div class="desc">Verwirrt </div>
  </div>
  <div class='gallery'>
    <img src="elefant.JPG" alt="Mountain View4" onclick="addUser('elefant')">
    <div class="desc">Elefant </div>
  </div>
  <div class='gallery'>
    <img src="gorilla.JPG" alt="Mountain View5" onclick="addUser('gorilla')">
    <div class="desc">Gorilla </div>
  </div>
  <div class='gallery'>
    <img src="happy.JPG" alt="Mountain View6" onclick="addUser('happy')">
    <div class="desc">Happy</div>
  </div>
  <div class='gallery'>
    <img src="happybirthday.JPG" alt="Mountain View7" onclick="addUser('happybirthday')">
    <div class="desc">Happy Birthday</div>
  </div>
  <div class='gallery'>
    <img src="helikopter.JPG" alt="Mountain View8" onclick="addUser('helicopter')">
    <div class="desc">Hubschrauber</div>
  </div>
  <div class='gallery'>
    <img src="hey.JPG" alt="hey" onclick="addUser('hey1')">
    <div class="desc">Hey</div>
  </div>
  <div class='gallery'>
    <img src="hinternkratzen.JPG" alt="hinternkratzen.JPG" onclick="addUser('hintenkratzen')">
    <div class="desc">Hintern Kratzen</div>
  </div>
  <div class='gallery'>
    <img src="kungfu.JPG" alt="kungfu.JPG" onclick="addUser('kungfu')">
    <div class="desc">Kung Fu</div>
  </div>
  <div class='gallery'>
    <img src="late.JPG" alt="late.JPG" onclick="addUser('late')">
    <div class="desc">Zu spät</div>
  </div>
  <div class='gallery'>
    <img src="luftgitarre.JPG" alt="luftgitarre.JPG" onclick="addUser('luftgitarre')">
    <div class="desc">Luftgitarre</div>
  </div>
  <div class='gallery'>
    <img src="maus.JPG" alt="maus.JPG" onclick="addUser('maus')">
    <div class="desc">Maus</div>
  </div>
  <div class='gallery'>
    <img src="monster.JPG" alt="monster.JPG" onclick="addUser('monster')">
    <div class="desc">Monster</div>
  </div>
  <div class='gallery'>
    <img src="muskeln.JPG" alt="muskeln.JPG" onclick="addUser('muskeln')">
    <div class="desc">Muskeln</div>
  </div>
  <div class='gallery'>
    <img src="niesen.JPG" alt="niesen.JPG" onclick="addUser('niesen')">
    <div class="desc">Niesen</div>
  </div>
  <div class='gallery'>
    <img src="pfeifen.JPG" alt="pfeifen.JPG" onclick="addUser('pfeifen')">
    <div class="desc">Komm Pfeifen</div>
  </div>
  <div class='gallery'>
    <img src="sachsofon.JPG" alt="sachsofon.JPG" onclick="addUser('sachsofon')">
    <div class="desc">Saxophon</div>
  </div>
  <div class='gallery'>
    <img src="spaceshuttle.JPG" alt="spaceshuttle.JPG" onclick="addUser('spaceshuttle')">
    <div class="desc">Spaceshuttle</div>
  </div>
  <div class='gallery'>
    <img src="thaichi.JPG" alt="thaichi.JPG" onclick="addUser('thaichi')">
    <div class="desc">Thai Chi</div>
  </div>
  <div class='gallery'>
    <!--<img src="traurig.JPG" alt="traurig.JPG" onclick="addUser('traurig')"><div class="desc">Traurig</div></div><div class='gallery'>-->
    <img src="trinken.JPG" alt="trinken.JPG" onclick="addUser('trinken')">
    <div class="desc">Trinken</div>
  </div>
  <div class='gallery'>
    <img src="verbeugung.JPG" alt="verbeugung.JPG" onclick="addUser('verbeugung')">
    <div class="desc">Verbeugung</div>
  </div>
  <div class='gallery'>
    <img src="waswillstdu.JPG" alt="waswillstdu.JPG" onclick="addUser('waswillstdu')">
    <div class="desc">Was willst du?</div>
  </div>
  <div class='gallery'>
    <img src="winner.JPG" alt="winner.JPG" onclick="addUser('winner1')">
    <div class="desc">Gewinner</div>
  </div>
  <div class='gallery'>
  </div>

  <script src="/libs/qimessaging/2/qimessaging.js"></script>
  <script src="js1/jquery-3.1.0.min.js"></script>
  <script type="text/javascript" src="js1/script.js"></script>

</body>

</html>

问题:当我在 Pepper 上运行这个应用程序时,它最初运行良好。我能够从平板电脑上一个接一个地选择不同的手势,而且它们运行良好。但是选择7-8次后,程序就挂了。平板电脑上的应用卡住,平板电脑上的任何选择都不会产生任何输出。通常,当其他应用程序出现这种情况时,我可以通过触摸头部触觉传感器 3 秒来退出应用程序。但是这个应用程序卡得很厉害,我无论如何都无法控制它。我试着让它从 Choregraphe 进入休眠状态并重新启动它,但自主生命没有出现。作为最后一种方法,我必须通过紧急按钮关闭 Pepper。每次我运行这个应用程序时都会发生这种情况。我们认为这可能是 Pepper 的问题,所以我们删除了 Pepper 上所有现有的应用程序,进行了出厂重置,然后在重置后只上传了这个应用程序。但是,问题仍然存在。如果您能指出我的任何文件中的任何错误或给我一个解决方案,那就太好了。

最佳答案

正如Anders_K所说,这可能是资源锁定的问题;你可能有:

  • 一个(糟糕的)动画需要一些运动资源,然后永远不会结束。运行时不会立即出现问题
  • 一个需要电机资源的动画,如果无法获取则等待(如果动画不好,那就是永远)

... 这对于测试它的人来说似乎是随机的,因为它看起来像是卡在不同的动画上,而实际上它只在过去发生了糟糕的动画时才会挂起。

如果您的动画处于外部行为,检查正在发生的事情的一种方法是通过 ssh 连接到机器人并调用 qicli call ALBehaviorManager.getRunningBehaviors - 您将看到您的动画是否应该已完成仍在运行。

关于javascript - Pepper 在程序运行期间崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51375370/

相关文章:

javascript - 如何在 JavaScript 中从子弹出窗口在父窗口中显示警报?

javascript - 在垂直高度的 50% 处停止使用 div 进行固定位置滚动?

html - 如何在文本中包含小数字(文本数字)?

javascript - 将文本传递给 JavaScript 函数

python - 参与区 Nao

python - 如何禁止 Pepper 在房间内移动

javascript - JS 改变图像 if/else

javascript - 提取 ttf 字体连字映射

javascript - 无需通过 JS 函数单击即可打开和关闭 Bootstrap 下拉菜单

nao-robot - NAOqi:端口NAO代码从2.1到2.8