This tutorial will show you how to display an image from the Nao camera on your local computer.
Follow Getting started with the Nao robot. You should now have the following set up:
Redis is running on your laptop and you have SIC installed locally
SIC is running on the Nao
Approach
First, let’s create a new file called demo_nao_camera.py
.
We first import some libraries and the CompressedImageMessage
and Nao
object.
import queue import cv2 from sic_framework.core.message_python2 import CompressedImageMessage from sic_framework.devices import Nao
Then, we make a queue and callback function to put the received images in this queue object.
imgs = queue.Queue() def on_image(image_message: CompressedImageMessage): # we could cv2.imshow here, but that does not work on Mac OSX imgs.put(image_message.image)
We then connect with the Nao robot and register the callback function to its top_camera
sensor.
nao = Nao(ip="192.168.0.210") nao.top_camera.register_callback(on_image)
Now, the queue will be filled every time there is a new image available from the Nao’s top camera. So, we can write a while loop to show these images as soon as they arrive.
while True: img = imgs.get() cv2.imshow('', img) cv2.waitKey(1)
That’s it! If you now run demo_nao_camera.py
, you will receive images from the Nao, put them in a queue, and continuously show the images from this queue. The full code can be found here: https://github.com/Social-AI-VU/sic_applications/blob/main/demos/demo_nao_camera.py.
Here is the schematic overview of how this program. The camera sends a “stream” of output messages that are received by your computer program.