## 2 Materials and Methods
### The Voxel Grid and the Approach to Capture Data
To convert from the image frame to the voxel, start with the agent's coordinate, which is assumed to be (0, 0, 0) if no prior information is available. Using the X, Y, Z coordinates of the pixel in the image and the pixel's depth (from the 3D depth sensor), the agent can project the pixel onto the world space grid, this can be seen in Figure 1. The information from the pixel will then be assigned to one of the neighbouring voxels. If there is already information present in the voxel for the current timestamp, the new and existing values will be combined and averaged. If the pixel is the first to be assigned to the voxel, all of its information will be added to the voxel for the current timestamp. The processes that an agent undertakes in this paper are described in Algorithm 1, with details of these processes found in the constituent parts of Section 2. Static definitions needed for agent loops  
\(w\) = Camera Width  
\(h\) = Camera Height```
1 forFor each time step \(T\)do  Sync with Communication Server  Record data from sensors  Read odometer forGenerate point cloud. for each \(X,Y\) in image framedo  depth data \(d\)  horizontal FOV \(f\) = horizontal FOV * (180.0 / \(\pi\)); \(\tan(x)\) = tan(horizontal FOV * 0.5);  Aspect Ratio \(a\) = \(h\) / \(h\);  vertical FOV \(v\) = \(2*\arctan(\tan(f*0.5)*AR)\);  Focal length \(x_{f}\) = \(0.5*w*(1/\tan(0.5*f))\);  Focal length \(y_{f}\) = \(0.5*h*(1/\tan(0.5*f))\);  Centre point for \(X\)\(c_{c}\) = \(w\) / \(2\);  Centre point for Y \(y_{c}\) = \(h\) / \(2\);  Run Image Segmentation Run Image Feature Detection Run Image Object Detection  Translate based on odometer reading forFor each time step \(X,Y\) with Rotation \(r\)do \( \begin{bmatrix}cosr&-sinr&0\\ sinr&cosr&0\\ 0&0&1\end{bmatrix} \)  Local alignment of image or sensor fame at \(T-1\)  Convert results to voxel grid  Global alignment of voxel grid  Alignment with Other agents  Add voxel grid to world grid
```

**Algorithm 1**Agent loop

### Creating the Voxel Grid

The voxel grid is the key aspect to building the world up with vivid information, whilst still capturing growth as a probability over time. If the agent has no prior understanding or mapping of the environment, then that agent's world can be started at any arbitrary point and defined as origin \((0,\ 0,\ 0)\). This is likely to change as the agent updates its information and communications with other agents. If it is now assumed that a data file was obtained with the current frame of vision from the

Figure 1: Figure illustrating an object overlaid with a voxel grid in 2D. (**A**) displays the object within its environment, while (**B**) depicts the voxel grid layered on top of the environment. (**C**) shows the voxels associated with the object displayed within the voxel grid. agent described in X, Y, Z Cartesian space, the origin point in the data file now becomes the origin point in the world view of that agent, and, furthermore, the populated voxel grid world now will use that point as the starting point to fill the world with unexplored voxel probabilities. Where the world space origin is not important (any point in a space can be defined as the originally defined point), it is clear that what is most significant is the constituency of the data aligned to that point, this being achieved with the aforementioned alignment techniques. Now that the origin is defined, the voxel generation process should be considered and the information contained within. First, the most basic information--positioning--can be inspected. After the alignment of one frame to another, the agent can simply take the point in 3D space and update the world space. However, this method would be too fine in resolution and we would rather combine information from close neighbours to generate a more generalised view of the information. For this, a region of interest can be simply defined and information can be captured from any point inside that ROI.