## 6 Governing Software
### Programming Languages and Frameworks  
Among modern languages, C/C++ are often preferred for the low-level programming of hardware components and modules requiring high efficiency and real-time operations, thanks to the availability of highly optimized compilers. Python, on the other hand, is frequently used for writing high-level scripts and integrating artificial intelligence algorithms, such as those used for computer vision and machine learning, due to its simplified syntax and vast amount of supporting libraries. AI-based algorithms, such as image or video classifiers based on deep learning models, typically rely on specific frameworks for machine learning programming, like PyTorch [60] or TensorFlow [61]. Both enable automatic multi-GPU and parallel computing and interface directly with common development environments for high-performance GPU-accelerated applications, such as CUDA [62], in a \"transparent\" way for the programmer, who does not need to directly invoke the environment's APIs. Even when initial attempts do not succeed, users can rely on a large, well-established community of developers and extensive documentation, which facilitate the implementation of more complex tasks. While CUDA was a pioneering initiative, \begin{table}
\begin{tabular}{l l l l l l} \hline \hline
**Simulation** & **Robot Types** & **Sensors** & **OS**1 & \begin{tabular}{l} **Programming Languages and** \\ **Environments** \\ \end{tabular} & **Ref. 1** \\ \hline Gazebo & UAV, UGV, cars, boats & \begin{tabular}{l} RGB, IR, LiDAR, IMU, \\ GNSS, Force, Distance, \\ Altimeper, Depth, RFID \\ \end{tabular} & \begin{tabular}{l} Linux, Mac OS, \\ Windows \\ \end{tabular} & Python, C++ and Java through ROS & [47, 49, 50, 53, 54, 55, 56] \\ \hline CoppeliaSim & Various industrial & \begin{tabular}{l} LiDAR, GNSS, IMU, RGB, \\ robots, ground vehicles \\ \end{tabular} & \begin{tabular}{l} Linux, Mac OS, \\ Infrared, Proximity \\ \end{tabular} & \begin{tabular}{l} C++, Python, ROS \\ \end{tabular} & [56, 57, 58] \\ \hline Webots & \begin{tabular}{l} UAV, UGV, cars, \\ humanoids \\ \end{tabular} & LiDAR, GNSS, IMU, RGB & \begin{tabular}{l} Linux, Mac OS, \\ Windows \\ \end{tabular} & C++, Python, Java, MATLAB, ROS & [51, 56] \\ \hline [PERSON] & \
\begin{tabular}{l} Industrial robots, \\ Ground robots \\ \end{tabular} &
\begin{tabular}{l} LiDAR, GNSS, IMU, \\ Infrared, RGB-D \\ \end{tabular} & Linux, Windows & C, C++, Python, Java, Lua, MATLAB, & [59] \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Main supported features and bibliographic references of simulation environments. providing efficient libraries for the high-performance implementation of machine learning and linear algebra tasks using GPUs as hardware accelerators, it is limited by being a proprietary software that only works with Nvidia devices. Alternative open software projects exist, such as Intel oneAPI [63] and AMD ROCm [64]. The first is a multi-architecture developer tool for accelerated computing across CPUs, GPUs, and FPGAs. AMD ROCm is optimized for demanding deep learning models, such as generative AI, and HPC applications on AMD GPUs. Despite the momentum gained by these alternatives, CUDA remains the benchmark in the field due to its long-term, consolidated, and extensive system of mathematical libraries and models. OpenCV [65], on the other hand, is the reference library for computer vision, offering more than 2500 algorithms through an open-source paradigm. In agriculture, it can be exploited for specific, important tasks involving image processing techniques, such as the Hough transform for detecting crop rows [66; 67]. Also, derivatives of OpenCV dedicated to plants have been introduced, like PlantCV [68], and are commonly used for data acquisition and analysis (see, for instance, [30]). Several of these libraries/environments do not directly support the C language or have deprecated it.