Back to Tutorials Index... ## What is Reeti <img src="../../images/tutorials/ReetiPortrait.jpg" width="300" height="360" /> Reeti is a robot made by the French company Robopec. It has flexible skin and 15 actuators(motors) in its face which enable it to express large numbers of emotions. With two RGB LEDs, it can change colors on its cheeks according to its moods. There are two touch sensors in its face to enable it to react with us. With HD cameras in its two eyes, Reeti has a clear view and a 3D perception of its environnment. In one word, Reeti is a robot which can express emotions and react with us.<br/> If you want to get more details about what Reeit can do, please click the following link: <a href="http://www.reeti.fr/index.php/en/" target="_blank"> http://www.reeti.fr</a> ## What is ReetiV2Engine ReetiV2Engine is a bridge between Reeti and VisualSceneMaker(VSM). It receives command messages from VSM, processes the messages and sends them to Reeti. During the procedure, ReetiV2Engine feeds back status messages to VSM to show whether the messages are executed successfully or not by Reeti. ## Connections between Reeti, ReetiV2Engine and VSM <img src="../../images/tutorials/ConnectionREV.png" width="400" height="300" /> Connection1: UDP (User Datagram Protocol) is used to connect ReetiV2Engine and VSM. IP addresses and ports must be configured correctly before we start our application.<br/><br/> Connection2: If we use JAVA API, a constructor is used to connect to Reeti which is Reeti (String _hostname). _hostname is the IP address of the Reeti. If IP address is 134.96.240.30, then we can do: Reeti reeti = new Reeti("134.96.240.30"); IP addresses must be configured correctly in ReetiV2Engine before we start our application, too.<br/><br/> More information about Reeti Java API is available at: <a href="http://wiki.reeti.fr/display/REETI/Reeti+Java+API" target="_blank"> Reeti Java API</a> <br/> ## Connect VisualSceneMaker to Reeti 1 Copy ReetiV2Engine from the server with SVN<br/> <blockquote> svn checkout http://hcm-lab.de/svn/SocialRobotics/Research/Development/Workspaces/Reeti username and password will be given by the tutor. </blockquote> <br/> 2 Clone VisualSceneMaker from github<br/> <blockquote> git clone https://github.com/SceneMaker/VisualSceneMaker.git </blockquote> <br/> 3 Adjust network configuration with ReetiV2Engine <blockquote> 1, Connection to Reeti: file: ./res/engineConfig_<Roboter-Name>.properties (in ReetiV2Engine) Adjust "robotIP" to be the IP address of the Reeti robot. 2, Connection to VisualSceneMaker: file: ./res/appConfig_<Roboter-Name>.properties (in ReetiV2Engine) Adjust "network.localIP" to be the IP address of the computer running ReetiV2Engine. Adjust "network.localPort", if necessary. Port is used by UDP. We can check which properties file is used from nbactions.xml file in ReetiV2Engine root directory. </blockquote> <br/> 4 Adjust network configuration with VisualSceneMaker <blockquote> Connection to ReetiV2Engine After a VisualSceneMaker project is created, a project.xml can be found in the project. In project.xml (VisualSceneMaker project) "lhost": the computer running VSM "rhost": the computer running ReetiV2Engine Adjust "lhost" and "lport" for VSM and "rhost" and "rport" for ReetiV2Engine. Make sure the values of "rhost" and "rport" here should be the same as the values of "network.localIP" and "network.localPort" in appConfig_<Roboter-Name>.properties. They are used by UDP. If VSM and ReetiV2Engine run on the same compuer, we can use the following settings: <Feature key="lhost" val="127.0.0.1"/> <Feature key="lport" val="1421"/> <Feature key="rhost" val="127.0.0.1"/> <Feature key="rport" val="1241"/> We can use Editor window to edit project.xml. We will introduce it in the "Hello World" Example later. </blockquote> <br/> 5 Language settings for Reeti <blockquote> In project.xml (VisualSceneMaker project) The child elements <Feature> define how an agent speaks. "language" : language used by Reeti (German:de or English: en) "voice" : voice used by reeti. (For English: Simon or Kate; for German: Stefan or Katrin) We can use Editor window to edit it, too. </blockquote> More language information is available here: <a href="http://wiki.reeti.fr/display/USERDOC/Reeti+V2" target="_blank">Reeti TTS controls</a> <br/> 6 Launch ReetiV2Engine and VisualSceneMaker <blockquote> launch ReetiV2Engine: please read README_(de).txt in the file ReetiV2Engine which is downloaded from our first step. launch VisualSceneMaker: 1, click Run > Clean and Build Project from the main menu to clean and build the project to generate an executable file. 2, click Run > Run Project from the main menu to launch Visual SceneMaker. After VSM is launched successfully you will welcomed by its Welcome Screen which is similar with the following picture. </blockquote> <img src="../../images/tutorials/VSMWelcomeScene.png" width="500" height="600" /> <br/> 7 "Hello World" Example<br/> <blockquote> 1, After we get to VSM Welcome Screen, click "New Project", type a project name "HelloWorld". Then, click on OK button to enter VSM Workspace. </blockquote> <img src="../../images/tutorials/HelloWorldExample1.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 2, Click on Save current button to save your project to an empty folder (which will contain project.xml). </blockquote> <img src="../../images/tutorials/HelloWorldExample2.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 3, Click on Project Preferences button, we will get a editor window which can help us edit project.xml file. </blockquote> <img src="../../images/tutorials/HelloWorldExample3.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 4, Select Devices, type a name "Reeti", then, select the ReetiExecutor from the combobox. After that, click on Add Device button. "Reeti" will be shown on the left side of the window. </blockquote> <img src="../../images/tutorials/HelloWorldExample4.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 5,Select "Reeti", use the add button at the botom to add lport, lhost, rport and rhost to ReetiExecutor.<br/> "lhost" and "lport": IP address of the computer running VSM.<br/> "rhost" and "rport": IP address of the computer running ReetiV2Engine.<br/> These settings are used for UDP communication between VSM and ReetiV2Engine. </blockquote> <img src="../../images/tutorials/HelloWorldExample5.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 6,Right click on "Reeti", select add new agent. We can change the name of the agent by double clicking. Let's change the name to reeti. </blockquote> <img src="../../images/tutorials/HelloWorldExample6.png" width="500" height="600" style="border:2px solid black"/> <blockquote> 7, Select the agent reeti, use the add button at the botom to add language and voice to the agent.<br/> "language" : language used by Reeti (German:de or English: en)<br/> "voice" : voice used by reeti. (For English: Simon or Kate; for German: Stefan or Katrin)<br/> After that, close the editor window to return VSM Workspace. </blockquote> <img src="../../images/tutorials/HelloWorldExample7.png" width="500" height="600" style="border:2px solid black" /> <blockquote> 8, In the Workspace, click on the add button of the Scene tab in Script Editor and change the example template to:<br/><br/> scene en HelloWorld<br/> reeti: Hello World![anim name='Emotions/happy'].<br/><br/> 'happy' is an Anim Command. Make sure 'happy' sequence has been created by you on Reeti.<br/> If you do not know how to create sequences, visit http://wiki.reeti.fr/display/USERDOC/RShowmaker.<br/><br/> 9, Drag "HelloWorld" from "Scenes" list in the Building Block panel on the left side to the "End" node. </blockquote> <img src="../../images/tutorials/HelloWorldExample.png" width="500" height="600" style="border:2px solid black" /> <br/> <blockquote> 10, Close the project and reopen it again. You can reopen it from the Recent Projects list.<br/> 11, Click on the Play button on the top toolbar, you will see Reeti says "Hello World!" and smiles. </blockquote> <img src="../../images/tutorials/ReetiSmile.jpg" width="250" height="350" /> <br/> ## Commands Available for ReetiV2Engine 1, Speech Command. <blockquote> VSM selects the text we write in Script Editor region and generates Speech Commands for ReetiV2Engine. So, Reeti can say what we write.<br/><br/> Since Reeti will move the bottomlip when it speaks, no other commands (Anim Command, Pose Command, Motor Command) which uses bottomlip should not be sent to Reeti when Reeti is speaking. </blockquote> <br/> 2, Anim Command. <blockquote> Reeti plays the chosen sequence(rmdl file) which is located on Reeti in /home/reeti/reetiDocuments/Sequences.<br/> For example: [anim name='Emotions/happy']. <br/> Reeti plays the rmdl file located at /home/reeti/reetiDocuments/Sequences/Emotions/happy.rmdl. rmdl file can be created with RShowmaker. <br/> The method of creating rmdl files is available here: <a href="http://wiki.reeti.fr/display/USERDOC/RShowmaker" target="_blank">RShowmaker.</a> </blockquote> <br/> 3, Pose Command.<br/> <blockquote> All the 15 actuators on reeti are asigned to make reeti to move to a position with a special speed we want.<br/> For example:<br/> [pose neckPan='50' speed='60']<br/> [pose neckPan='50' neckTlt='30' speed='50']<br/> [pose neckPan='50' neckTlt='30' rightEyeTilt='40' leftEyePan='20' speed='70']<br/><br/> actuators: (neckRotat, neckPan, neckTilt, rightLC, leftLC, topLip, bottomLip, rightEyePan, rightEyeTilt, leftEyePan, leftEyeTilt, rightEyeLid, leftEyeLid, rightEar, leftEar)(float)(from 0 to 100).<br/> speed: move speed (int)(from 10 to 300). </blockquote> <br/> <blockquote> <b><font color="red"><b>Warning:</b></font></b><br/> <font color="red">The actuators of reeti which are not assigned a value by us in [ ] will be assigned a value which is got from the current position of reeti. So, Pose Command will send the command to all the 15 actuators at the same time. We must not give any actuator a differnet command when the current Pose Command is not finished.</font> </blockquote> <br/> 4, Motor Command.<br/> <blockquote> A single actuator on reeti is asigned to make reeti to move to a position with a special time we want.<br/> For exmaple:<br/> [motor neckPan='20' smooth='0.4']<br/><br/> actuator: (neckRotat, neckPan, neckTilt, rightLC, leftLC, topLip, bottomLip, rightEyePan, rightEyeTilt, leftEyePan, leftEyeTilt, rightEyeLid, leftEyeLid, rightEar, leftEar)(float)(from 0 to 100).<br/> smooth: (float)(Should not be less than 0.2).<br/> smooth='1' means reeti needs to take around 24ms to reach the destination.<br/><br/> A Urbi Java Server is needed to handle Motor Commands. So in order to use the commands, we need to launch another application(ReetiUrbiServer) on Reeti. ReetiUrbiServer can be downloaded from github.<br/><br/> git clone https://github.com/RobbieGUO/ReetiUrbiServer.git<br/><br/> README.md in the file ReetiUrbiServer shows us how to launch ReetiUrbiServer on Reeti. </blockquote> <br/> <blockquote> <b>"HeadMove" Example.</b><br/> There is an example in "ReetiTestSuits" which controls the moves of neckPan, rightEyeLid and leftEyeLid with Motor Commands concurrently.<br/> After we launch VisualSceneMaker with netbeans, click "ReetiTestSuits" from its "Tutorials" list to enter the workspace.<br/> Click Project Preferences button to change the IP setting of the reeti executor. <br/> In the SceneFlow Editor, there is a Super Node named HeadMove. Set it as Start Node. <br/> Double click to go into that Super Node and set Basic Nodes N24, N39, N20 and N22 as Start Nodes. <br/> Now we will get a sceneflow similar with the following one. <br/> <img src="../../images/tutorials/HeadMoveFlow.png" width="600" height="600" /> <br/> Click the Play button on the top toolbar. We will see Reeti Shakes its head, blinks its eyes and says "Well, you know what? I always want to fly to the sun!" at the same time!<br/> </blockquote> <br/> <blockquote> <b><font color="red"><b>Warning: </b></font></b><br/> 1, Motor Command is not proved to be safe enough to control Reeti. To avoid damage, please be careful when you use the Motor Command. Don't send different commands to the same actuator <font color="red">at the same time or in a very short time(no less than 200ms)</font>.<br/> 2, Only one actuator of reeti can be assigned in one [ ]. We can move the others actuators which are not in the same [ ] with other commands at the same time. </blockquote> <br/> 5, LED Command.<br/> <blockquote> LED Command is used to control the two RGB LEDs on Reeti's cheeks.<br/> For exmaple:<br/> [led color='red' side='both']<br/><br/> color: "off" or the name of a color.<br/> side: "left", "right", "both".<br/> </blockquote> <br/> ## Videos of Reeti 1, Motor commands are used to control leftEyeTilt, rightEyeTilt and neckTilt synchronously in the following video. Reeti nods and moves its eyes up and down at the same time. <video width="600" controls> <source src="../../video/Reeti-HeadNodGazeFixation.mp4" type="video/mp4"> </video> <br/> 2, Motor commands are used to control neckPan, rightEyeLid and leftEyeLid synchronously and speech commands are used to tranlate text to voice in the following video. Reeti shakes its head and talks at the same time. <video width="600" controls> <source src="../../video/Reeti-HeadTilt.mp4" type="video/mp4"> </video> <br/> ## More information about Reeti It is better to read <a href="http://wiki.reeti.fr/display/HOME/Index" target="_blank">http://wiki.reeti.fr/</a> carefully before we start our work.
Back to Tutorials Index...