Lulu - a software simulator for P colonies. Use case scenarios and demonstration videos

2018-05-22T08:29:01Z (GMT) by Florea, Andrei George Buiu, Catalin

The videos show three different examples of using the Lulu P colony simulator.

The Lulu P colony simulator is available under an open-source MIT license at https://github.com/andrei91ro/lulu_pcol_sim. All of the secondary applications, including Lulu_Kilobot are available (also under open-source licenses) at https://github.com/andrei91ro.

The first two videos present the simulator running addition (+1) and subtraction (-1). In these two examples, the simulator is ran in a step by step mode in order to clearly visualize the results of running each simulation step. For this reason the total simulation time reported at the end of the simulation is in the order of minutes.

The average (of five runs) simulation time for a normal (non-interactive) simulation is 0.0021050 seconds for the addition and 0.0047492 seconds for the subtraction examples.

The third example (lulu_kilobot_30_steps) presents the simulator running a more complex P colony that controls a Kilobot robot simulated in V-REP. This P colony is based on the subtraction P colony in the sense that each move the robot makes is marked by the removal of an f object from the environment.

The input file used in the addition example (lulu_sim_ag_increment):

pi = {
        A = {l_p};
        e = e;
        f = f;
        n = 2;
        env = {f, f, f, l_p};
        B = {AG_1};
                AG_1 = ({e, e}; < e->f, e<->l_p >, < l_p->e, f<->e >);
}

The input file used in the subtraction example (lulu_sim_ag_decrement):

pi = {
        A = {l_m, l_p, l_z};
        e = e;
        f = f;
        n = 2;
        env = {f, f, f, l_m};
        B = {AG_1};
                AG_1 = ({e, e};
                                < e->e, e<->l_m >,
                                < l_m->l_p, e<->f/e<->e >,
                                < f->e, l_p<->e >,
                                < l_p->l_z, e<->e >,
                                < e->e, l_z<->e > );
}

The input file used in the Kilobot example (lulu_kilobot_30_steps):

pi = {
        A = {l_m, m_0, m_S, m_L, m_R, c_R, c_G, c_B};
        e = e;
        f = f;
        n = 2;
        env = {f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, l_m};
        B = {AG_command, AG_motion};
                AG_command = ({e, e};
                                < e->e, e<->l_m >,
                                < l_m->m_S, e<->f/e<->e >,
                                < f->e, m_S<->e >,
                                < m_S->m_0, e<->e >,
                                < e->e, m_0<->e > );

                AG_motion = ({e, e};
                                < e->l_m, e<->m_S >,
                                < m_S->e, l_m<->e/e->e >
                                < e->e, e<->m_0 >,
                                < m_0->e, e<->m_0/e->e >);
}

 

Categories

Keyword(s)

License

CC BY 4.0