# Virtual Pheromone Based Network Flow Control For Modular Robotic Systems
## 4 Experiments and Results
### Preliminary Results
On the established channels, the link maintenance process is activated with the processing time \(t_{w3}\). We have the probability for the robots in _free_ state to discover a topology of connected modules as:  
\[ \begin{split} P_{D2}&=P_{s}\times P_{r}\times F_{ tr}\\ &=\frac{1}{N}\times(1-\frac{t_{c}}{t_{w2}})\times(1-\frac{t_{c}}{t _{w3}})\\ &=1/6\times(1-1.8/700)\times(1-1.8/1100)\\ &=1/6\times 0.997\times 0.998\approx 0.166\end{split}  \tag{15}\]  
The closing time is short as compared to the processing time, thus its effect on the overall result is unnoticeable. Reducing the processing time leads to increasing the chance to discover neighbours but also increasing the energy consumption. In opposition, increasing processing time might affect the time response of the robotic system to end users. In the link maintenance process, the probability for a maintenance signal successfully received by its connected neighbour is calculated:  
\[ \begin{split} P_{M}&=P_{s}\times P_{r}\times F_{t} \\ &=1\times(1-\frac{t_{c}}{t_{w2}})\times(1-\frac{t_{c}}{t_{w3}})\\ &=0.997\times 0.998\approx 0.995\end{split}  \tag{16}\]  
We applied the common hand shake technique for local neighbour-to-neighbour communication process. If the receiver \(B\) does not involve in other communication process, the probability for receiving a data packet from the sender \(A\) is  
\[ \begin{split} P_{C}&=P_{A}\times P_{B}\times F_{t} \\ &=1\times(1-\frac{t_{c}}{t_{w2}})\times(1-\frac{t_{c}}{t_{w3}})\\ &=0.997\times 0.998\approx 0.995\end{split}  \tag{17}\]  
Even both the neighbourhood discovery and link maintenance active during the communication process, neighbour-to-neighbour data transmission still remains at the high possibility. **Gradient-based routing for any-to-root communication path:** We designed an edutainment application to illustrate the path formation based on the gradient-based routing algorithm. The _Phonic Game_ is developed to help children studying language through tangible programming by replacing passive wood blocks by the **moreBot**, which provides an innovative teaching and learning method. **moreBot** are converted into the _alphabet character_ building blocks. We embedded five different characters to five faces of each block. Using the accelerometer to identify the top face, the character on the top face is selected to represent the building block in the _Phonic Game_. We also designed one special block with a loud speaker to play the recorded soundtracks. The _Phonic Game_ is used to examine the path formation process by the following demonstrations. _Transferring data from any module to the root:_ We proved that the gradient-based routing provides a reliable method for transferring data packets from any module to the _root_. The first mode of the _Phonic Game_ is about the _word generation_. We started the word generation game by plugging the speaker module at one end of the robotic configuration. The block was activated by the user to become the _root_, so it broadcasted the gradient to its neighbours sequentially. The _gradient recovery mechanism_ helped all the building blocks adjust their gradients whenever the network morphology was reconfigured. We utilized the infra-red ranging function on the top face only for user-block interaction, preventing interference of infra-red signals on the other faces. In general, the further the building blocks counted from the _root_, the higher the gradient-based ID, as shown in Figure 6. When the user interacted with a building block, the representing character i.e. 'a' or 'b' was embedded into the data packet sent to the neighbours towards the _root_ by following the gradient descent. Along the communication path, the representing characters of the other building blocks were also inserted into the data packets. Hence the final packet reaching the _root_ contained a string of characters of all the building blocks in the communication path in order of the gradient descent counted from the block activated by the user.