RoboComp Logo

A simple robotics framework.

I command thee

May 16, 2017

The coding period hasn’t commenced yet but I needed to test my prototypes before I started working on the final code. I had already cloned the repositories required for the task while I was preparing my proposal for GSoC but I was not able to understand how to make components. I mailed my mentors to guide me on how to start working with the robocomp framework and they replied back, clearing all my doubts. ❤

Following the links in the reply, I started making the component in the robocomp directory to test my prototype code for the Event-based approach to programming the Learnbot. This itself has two subtasks: One is real-time and the other is script. I finished this the same night but I took two days to test and refine my code.

In this post, I’ll explain how I created and tested the components for the above mentioned tasks. To follow this, however, you need to install RoboComp .

Real-time Terminal version

cd into the robocomp directory

cd components/robocomp-robolab/components

mkdir terminal_rt
cd terminal_rt
robocompdsl terminal_rt.cdsl

A dummy file is generated which we will modify as per our needs

subl terminal_rt.cdsl

You may use any other editor, sublime is my personal favorite. ❤

Change the terminal_rt.cdsl file to

import "/robocomp/interfaces/IDSLs/Laser.idsl";
import "/robocomp/interfaces/IDSLs/DifferentialRobot.idsl";

Component terminal_rt
{
    Communications
    {
        requires DifferentialRobot, Laser;
    };
    language Python;
};

Save the file and then

robocompdsl terminal_rt.cdsl build
cd build/src
subl specificworker.py

Check the code for specificworker.py here

Open another terminal and type

cd robocomp/files/innermodel
rcis simpleworld.xml

This sets up the environment for simulation testing of your components.

Go back to the previous terminal. Make sure you are in the build directory, and type

python src/terminal_rt.py --Ice.Config=etc/config

If you get an error at this stage, you need to edit the config file:

subl etc/config

And change the first two lines to

DifferentialRobotProxy = differentialrobot:tcp -h localhost -p 10004
LaserProxy = laser:tcp -h localhost -p 10003

And run the command again.

The following is the list of valid commands, developed till now

start
halt
stop
restart
right
right <distance>
left
left <distance>
back
back <distance>
straight
straight <distance>
continue <time in seconds>
turn back
turn left
turn right
turn <angle in degrees>
what is speed
what is rotation
set speed to <speed>
set rotation to <angular speed in rad/s>
quit
exit

Script file version

All the steps remain same as the terminal version. Just use a different name this time, I have used script_dsl specificworker.py for this can be found here

To program the Learnbot,

subl src/commandset.txt

Write the commands and save the file, then run

python src/script_dsl.py --Ice.Config=etc/config

And see the bot follow your commands in the simulator window. 😀

I’ll commit these changes once the coding period begins. 😛

I’ve tested and debugged the components but if you find any bug while running this, please report it in the comments. Thank you 🙂


Aniq Ur Rahman