【问题标题】:How to stop Pepper robot from preempting its tablet?如何阻止 Pepper 机器人抢占其平板电脑?
【发布时间】:2018-06-05 09:22:46
【问题描述】:

我正在尝试创建一个程序,其中一部分将使用 naoqi Python SDK 从我的 PC 网络摄像头将实时视频以帧(或换句话说图像)传输到 Pepper 的平板电脑。在机器人一侧,会有一个程序使用 ALTabletService 的 showWebview 函数将图像显示为 html 网页。但是在这个过程开始后,它只进行了几秒钟,然后屏幕返回到它的主页。我猜机器人抢占了我的程序。但是 playVideo 功能不会发生这种情况。有什么办法可以克服吗?

PC端:

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

def gen(camera):
    # Set our pipelines state to Playing.
    video_pipeline.set_state(Gst.State.PLAYING)
    audio_pipeline.set_state(Gst.State.PLAYING)
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'
            b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n') #sending frames to the webpage

@app.route('/video_feed')
def video_feed():
    try:
        return Response(stream_with_context(gen(VideoCamera())), mimetype='multipart/x-mixed-replace; boundary=frame')
    except Exception:
        return None

if __name__ == '__main__':
#   app.run(host='0.0.0.0', port = http, debug=True, threaded=True)
    http_server = WSGIServer(('0.0.0.0', http), app) #creating a server with open ip
    http_server.serve_forever()

胡椒面:

tabletService = session.service('ALTabletService')
tabletService.loadUrl('http://' + user_ip + ':' + str(user_http_port) + '/')
tabletService.showWebview()

【问题讨论】:

  • 你说的“主屏幕”是什么?
  • 这是pepper开机闲置时的默认画面。

标签: python flask robotics pepper preemption


【解决方案1】:

这是因为 Pepper 的自主生活是围绕 activities 构建的,只要活动失去焦点,Pepper 就会重置一切——语言、姿势、LED,是的,平板电脑。

因此,理想情况下,您的代码应该在应用程序内部(即标记为“交互式”的行为),并且只要它具有焦点,平板电脑就不会重置。

(编辑)创建一个独立 Python 脚本的应用程序,一种简单的方法是使用机器人 jumpstarter,这是一个 Python 脚本,它将从模板(包含所有样板等)生成应用程序,请参阅 here for说明。

【讨论】:

  • 是否可以通过 Python SDK 创建活动?如果是这样,您可以在文档或示例中显示它吗?
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多