In order to apply methods of object detection and distance estimation, we decided to implement stereo cameras for their beneficial use in computer vision methods. Stereo cameras also referred to as binocular vision, are two cameras that are placed at a defined baseline apart to replicate a form of vision similar to humans. When properly calibrated, these two cameras, which operate simultaneously, are capable of producing 3D images as well as depth maps. These depth maps can be used to find the depth an object is away from the cameras, and therefore estimate the real-world distance using ratios to calculate it.
Besides our robot’s cameras viewing the planned AprilTags, as an autonomous robot, we must expect other objects to be in the navigation path and handle them accordingly. Such objects can be defined as obstacles, and present multiple complications to a standard path installation. For example, an object may be small and avoidable by just a slight shift to the side and then a continued forward path, like a cone or box. However, the object can be large and turn out to be a human, which should be handled differently—since the TurtleBot3 is not faster than most humans, and it would be best for the robot to stay a safe distance behind the human. Because of these scenarios, and various others that may spring from the combinations of both humans and objects, the detection, identification, and depth of these obstacles, is necessary.


Arduino Motor Control:
The OpenCR 1.0 board is a component of the TurtleBot3 system that has been developed for ROS-embedded systems, allowing for open-source hardware and software. The microcontroller used is the STM32F7 chip. The 5V power source is supplied from a resulting 12V output, from the provided 11.1V Li-Po Battery Pack. The OpenCR board is connected to the Nvidia Jetson Nano. The board requires packages to be uploaded to the firmware for the waffle model and after the downloading of the firmware and loader, file extraction is carried out. The OpenCR Test instruction allows for the updating of the two DYNAMIXEL configurations. This was done manually through the Arduino IDE which allows for the independent setup and testing of the left and right motors after the successful identification of the respective port. Through troubleshooting, if the respective port cannot be found the command “ls /dev/ttyA*” can be used for port identification and if neither motor is running remove the connection to one motor to the OpenCR. With the use of the Serial Monitor in the Arduino IDE both the left and right Dynamixels are set up upon success the .ino file is uploaded to the OpenCR.
