# Petri Net Toolbox for Multi-Robot Planning under Uncertainty
## 3 Materials and Methods
### Application-Solarfarm Inspection  
In this subsection, we address a multi-robot inspection application with the proposed toolbox. The problem consists in a solar farm with four photovoltaic panels that require regular inspection. The inspection is carried by two small unmanned ground vehicles (UGVs) that have limited battery autonomy. A larger UGV that carries bigger batteries acts as a mobile charger and can recharge one small UGV at a time. The goal is to maximize the number of times all four solar panels are inspected. Figure 12 shows the solar farm world implemented in Gazebo. Overlapped on this world, the topological map the robots use to navigate is depicted. The terrain is uneven and it introduces wheel slippage that increases the uncertainty during navigation. There  
Figure 11: (**Top Left**) Execution module CPU usage as the number of locations increases; (**Top Right**) Execution module memory usage as the number of locations increases; (**Bottom Left**) Execution module CPU usage as the number of robots increases; (**Bottom Right**) Execution module memory usage as the number of robots increases. is also uncertainty associated with the time it takes to inspect each solar panel and with battery charging and discharging. The simulation was implemented in ROS and it was tested in ROS Noetic and Melodic versions. The small UGVs and the large UGV used were Clearpath's Jackal UGVs and Warthog UGV, respectively. The localization was obtained from an extended Kalman filter algorithm that uses fused GPS, IMU and odometry sensor data. To navigate we used the move-base package without any modifications. The Gazebo world can be found in [28], the Jackal's packages are in [29] and the Warthog packages are in [30]. These repositories were built from Clearpath's source code and adapted to enable multiple robots operating simultaneously. A video with the system executing can be visualized here: (youtube.com/watch?v=SzpZBFm)Zn8, accessed on 1 November 2021). To capture this application as a GSPNR model we used the toolbox design method that builds the model from a given topological map and action models. The final GSPNR is one single connected model but is the result of merging two different models. One model that captures the small UGVs and another that captures the large UGV actions and dynamics. The tokens in these models never flow from one to the other, ensuring distinction between the two types of robots. The small UGV model captures navigation, inspection and recharge actions. The large UGV model captures navigation and recharge actions since this type of robot only acts as a mobile charger and is not able to inspect. The actions that require cooperation such as the battery recharge are the only parts where both models meet. This is detailed bellow when present the recharging model. Having different models for each robot type enables heterogeneous multi-robot modeling, while maintaining the representation of each robot as a token. With this representation the state space grows with \(p_{1}\)_multichoose_\(r_{1}\times p_{2}\)_multichoose_\(r_{2}\), where \(p_{1},r_{1}\) and \(p_{2},r_{2}\) are the places and tokens of the small UGV and the large UGV, respectively. Still, it grows slower than having a GSPNR model per robot, given that each type has more than one robot. This approach is scalable for more than two types of robots, by applying the same method of building separate models and connecting them through the cooperative actions. The goal is not to decide when is the best time to recharge, but where should the robots be, and in which order should they inspect the solar panels, such that, when they need to recharge they can do it as efficiently as possible. For this reason, we discretized the battery of the small UGVs in two levels: high and low. On the lower level the small UGVs  
Figure 12: Solar farm Gazebo world with the topological map overlapped. The red rectangles represent the area that must be covered to ensure a reliable solar panel inspection. cannot perform any action besides recharging.