# Experimental Analysis of the Behavior of Mirror-like Objects in LiDAR-Based Robot Navigation
## 4 Methodology and Approach
### Interface Setup  
The Turtlebot has both an SBC (Raspberry Pi) and a controller (OpenCR). The microcontroller is used for communication with sensors and actuators. In this case, the OpenCR interacts with the IMU and the Dynamixel servo motors. This setup is particularly useful for odometry. SBCs are essentially small-scale, fully functioning computers that can run an operating system. This is desirable for use with ROS, as it needs an operating system to run on, so using a raspberry pi allows ROS to be used directly on the robot. The secure shell protocol (SSH) is used to communicate with the SBC of the mobile robot from a PC using remote access. It uses a client-server architecture to allow communication between the two entities by providing a secure connection over a nonsecure network, such as Wi-Fi [21]. In this setup, a Linux command was used to establish the connection between the remote PC and the robot.  
Once the robot is accessible remotely, ROS-related packages can be brought up through the roscore command. These packages are a collection of programs and nodes, including an ROS master and ROS parameter server [18]. Enabling the ROS master is a prerequisite to using the system, as it allows nodes to be located and communicate with other nodes. After ROS packages are initiated to interface with the turtlebot, the turtlebot packages need to be brought up as well. These packages are provided through Robotis. Teleop, which is short for \"teleoperation\", and provides the ability to control movement of the robot through the keyboard of the remote PC. With respect to the Turtlebot, this node allows a general range of motion in four directions and allows the robot to move with a range of linear and angular speeds. Figure 4 shows the communication between the robot and the PC. The SLAM node can only run after SSH is set up and roscore is enabled.  
SLAM uses IMU and LiDAR data to build a continuous map of the environment. GMapping is a grid-based SLAM algorithm that uses particle filter-based adaptive Monte Carlo localization and local pose estimation to create a grid-based map of the environment (Figure 5).  
The particle filter used in this algorithm is a [PERSON] particle filter. This filter sets the initial belief that in a set of uniform Gaussian distributions, every sample has an associated weight. Random weights determine which states are evaluated, where higher weights are more probable and lower weights are less likely. The joint posterior probability of the position and map is estimated. Sampling occurs to generate new particles, where weighting is recalculated and then resampled, and a map update occurs [20].  
While running a SLAM node, to obtain the most accurate data, the robot should be run slowly to obtain as many laser samples as the LiDAR can pick up in a particular area. It is not recommended to drive over the same area more than once while mapping because this  
\begin{table}
\begin{tabular}{l l} \hline \hline \multicolumn{2}{c}{**Turtlebot 3-Waffle Pi: Specifications**} \\ \hline SBC & Raspberry Pi 3 \\ \hline Embedded Controller & OpenCR \\ \hline \multirow{3}{*}{Sensors} & Raspberry Pi 3 Camera \\ \cline{2-3}  & 360 LiDAR (LDS-01) \\ \cline{2-3}  & IMU (3-axis gyroscope, accelerometer, magnetometer) \\ \hline \multicolumn{2}{c}{LDS Specifications} \\ \hline Detection Distance & 120–3500 mm \\ \hline Distance Precision & \(\pm\)15 mm \\ \(\pm\)5.0\% \\ \hline Distance Accuracy & \(\pm\)10 mm \\ \(\pm\)3.5\% \\ \hline Scan Rate & \(300\pm 10\) rpm \\ \hline \hline \end{tabular}
\end{table}
Table 2: Turtlebot 3 and LiDAR Specifications [20].  
will increase noise in the map. To visualize the LiDAR data, RViz is initiated, and the robot is moved through the system through a teleoperation node. The robot can alternatively be moved using remote control or an object detection and automation strategy. After executing the test strategy, the built map is saved for further analysis.