我试图创建一个程序,其中一部分将使用闹钟从PC的网络摄像头以帧(或图像)方式传输实时视频到Pepper的平板电脑Python SDK。在机器人方面,将有一个程序使用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()
答案 0 :(得分:2)
这是因为Pepper的自主生活是围绕activities而建立的,只要活动失去焦点,Pepper就会重置一切 - 语言,姿势,LED,以及平板电脑。
理想情况下,您的代码应该位于应用程序内部(即标记为“交互式”的行为),只要它具有焦点,平板电脑就不会被重置。
(编辑)创建一个独立的Python脚本应用程序,一种简单的方法是使用机器人jumpstarter,一个将从模板生成应用程序的python脚本(包含所有样板文件等),请参阅{{3}用于说明。