Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SIC

SIC is a framework for quickly getting started with social robotics by making it simple to combine complex devices such as Nao’s and powerful services such as Google Dialogflow.

Getting started with SIC consists of a few basic steps:

  1. Installing SIC on your device

  2. Installing SIC on your robot

  3. Starting Redis and SIC on your device

  4. Starting SIC on your robot

  5. Start your SICApplication to control the robot

Installation

You can find the instructions on how to install the framework here: Install

Setup

Once installed to all devices you want to use, we can start the framework.

Starting Redis and SIC on your laptop

To enable communication between all your devices, we have to start Redis on some device.

This can be done in two ways: By starting redis yourself or using docker. We recommend using docker as this makes starting other services easier later on.

Docker

Start it on your laptop in the root framework sic folder (for MacOS and Windows: make sure Docker Desktop is running).

Code Block
languagebash
cd your/path/to/sic
docker compose up redis

This should start print Container sic-redis-1 Created which means Redis is up and running.

No Docker

In a terminal, start redis using

Code Block
redis-server

Optionally, you can now start other services on your laptop, such as text to speech, either using docker

Code Block
docker compose up text2speech

Or by starting the service in a terminal. Note that when starting a service or running a file, the appropriate environment variables must be set. TODO: Windows env variables?

Code Block
cd sic/sic_framework/services/text2speech
export DB_PASS=changemeplease
export DB_IP=localhost
python3 text2speech_service.py

Starting SIC on the Robot

Expand
titleNotes on windows installation

This script sets environment variables and start the framework on the robot. However, running scripts on windows is not very simple. If you cannot execute the scripts by calling them from a powershell terminal, open them using a text editor and copy the commands into the terminal manually. Remember to adjust variables such as IP addresses

In a new terminal, start the framework on the robot using

Code Block
languagebash
cd sic/sic_framework/scripts/
sh ./start_robot.sh -h ROBOT_IP -n ROBOT_DEVICE_ID -b REDIS_IP

# Windows:
.\start_robot.ps1 ROBOT_IP ROBOT_DEVICE_ID REDIS_IP

Where:

  • ROBOT_IP is the adress of the Nao or Pepper robot

  • ROBOT_DEVICE_ID can be any name as it is the device_id with which the robot will identify itself in the framework.

  • REDIS_IP Your laptop IP address (use ipconfig on windows or hostname -I on linux or ipconfig getifaddr en0 on mac)

Example command:

Code Block
languagebash
sh ./start_robot.sh -h 192.168.0.116 -n nao1 -b 192.168.0.181

# Windows
.\start_robot.ps1 192.168.0.116 nao1 192.168.0.181

This should show an output like

Code Block
nao@nao:~/sic/sic_framework/devices$ python nao.py --robot_name nao1
Starting service manager with device id "nao1" with services:
 - NaoqiMicrophone
 - TopNaoCamera
 - BottomNaoCamera
Starting service manager with device id "nao1" with services:
 - NaoMotionReplayAction
 - NaoMotionRecorderAction
 - NaoMotionAction
 - NaoMotionStreamConsumer
 - NaoqiTextToSpeechAction
 - NaoMotionStreamProducer
 - NaoqiTabletService

Running a demo

To start a demo, for example to show pepper’s camera output on your screen, simply execute a python script with a SICApplication. Some demos are available in the docker/sic/sic_framework/tests folder.

Terminal

To start the camera demo from the terminal, use the following commands.

Note: This demo requires you to have the OpenCV and tqdm modules and libjpeg-turbo installed, as well as have the framework installed on a NAO robot (see above). On Windows, moreover, the libjpeg dependency may not be automatically be found, and you may need to set the path to libturbojpeg.dll manually.

Code Block
cd docker/sic/sic_framework/tests

export DB_IP=localhost  # set on Windows
export DB_PASS=changemeplease  # set on Windows

python3 demo_camera.py # on Windows simply use python
Pycharm

The environment variables (the export command in the code above) need to be set. If you are using PyCharm to run the script, set these in the Run/Debug configuration in the Environment variables menu. Copy these two lines into the menu:

Code Block
DB_IP=localhost
DB_PASS=changemeplease

If all went This guide assumes you already followed the steps here Getting started.

For example, to show the camera feed of the robot:

In the demo_nao_camera.py make sure to adjust the ip adress to the ip adress of your robot. If you press the chest button of the robot it will tell you it’s ip adress. Ensure you are on the same network as the robot, and then you are good to go!

To start the camera demo from the terminal, use the following commands.Note: it might take some time to start the demo file if the SIC has never been installed on the robot.

Ubuntu / Debian / macOS
Code Block
# Activate the same virtual environment where you pip installed 
# social-interaction-cloud in the installation steps
source venv_sic/bin/activate

# Go to sic_applications and the demo script
cd sic_applications/demos
python demo_nao_camera.py
Windows
Code Block
# Activate the same virtual environment where you pip installed 
# social-interaction-cloud in the installation steps
.\.venv_sic\Scripts\activate

# Go to sic_applications and the demo script
cd sic_applications\demos
python demo_nao_camera.py

And, you should get the following output:

Code Block
Starting SIC on /data/home/nao/.venv_sic/lib/python2.7/site-packages/sic_framework/devices/nao with redis ip 192.168.2.6
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiSpeakerComponent
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiButtonSensor
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiAutonomousActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiMicrophoneSensor
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiMotionActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiBottomCameraSensor
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiStiffnessActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiMotionRecorderActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiTextToSpeechActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiTrackerActuator
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiTopCameraSensor
[SICComponentManager 192.168.2.7]: INFO:  - NaoqiLookAtComponent

If all goes well, a display should pop up showing you the camera output of your robot!

API

The goal of SIC is to provide easy to use high level access to devices and services. To For example, to make a NAO robot say something, follow the startup instruction in https://socialrobotics.atlassian.net/wiki/spaces/CBSR/pages/2180415493/Install#Starting-SIC-on-the-Robot and run the following python script on your laptop.ENV VARIABLES! To see more functionality check out the sic_applications /demos folder!

Code Block
languagepy
from sic_framework.devices import SICApplicationNao
from sic_framework.devices.common_naoqi.naoqi_text_to_speakersspeech import NaoqiTextToSpeechAction, NaoqiTextToSpeechRequest

nao class= DemoTextToSpeech(SICApplication):
    def run(self):
        nao3_action = self.connect(NaoqiTextToSpeechAction, device_id='nao1')
        nao3_actionNao(ip='192.168.0.151') # adjust this to the IP adress of your robot.

nao.tts.request(NaoqiTextToSpeechRequest("Hello world!"))


if __name__ == '__main__':
    test_app = DemoTextToSpeech()
    test_app.run()