Skip to content
naitiknakrani-eic edited this page Apr 6, 2023 · 44 revisions

VSLAM, Navigation and Sensor fusion using ADI ToF and IMU with Nvidia AGX Orin

image

About

Table of Contents

  • AMR Overview system contains brief details about the system block diagram, which shows how the various parts are interconnected.

  • One must set up prerequisites for the AGX Orin kit, EVAL-ADTF3175D-NXZ module, and ADIS16470 IMU before running the entire navigation pipeline. Information on ROS2 setup and necessary dependent software packages can be found in Software requirements.

  • To avoid any software dependency errors in the future, we advise carefully following this step. Setup for ToF provides the standard method of flashing an image for the EVAL-ADTF3175D-NXZ.

  • To connect the inertial measurement unit ADIS16470via USB on AGX Orin, an additional connection is needed. In Setup for IMU, the specific setup instructions for ADIS16470 are provided.

  • One must be able to access IR and Depth data coming from EVAL-ADTF3175D-NXZ in AGX Orin to follow the instructions in Interfacing Tof With AGX Orin. To make it simple to integrate with ROS2 software stacks, this data will be presented as ROS2 topics.

  • Similarly, by following the instructions in Interfacing Imu with AGX Orin, ADIS16470 IMU data can be accessed in ROS2 topics.

  • Creating a map of its surroundings is critical for AMR to perform autonomous navigation. In our case, we used the well-known RTAB-Map algorithm to create a map from Time-of-Flight sensor data. The RTAB-Map library is available as ROS2 packages. Follow the instructions in section 6 to determine whether RTAB-Map only works with the EVAL-ADTF3175D-NXZ sensor.

  • Navigation with TOF Tutorial on AMR and Sensor Fusion and Navigation with TOF Tutorial on AMR both provide a comprehensive tutorial on autonomous navigation performed on EIC developed AMR. This AMR is controlled by AGX Orin, and external sensors EVAL-ADTF3175D-NXZ and ADIS16470 were connected.

  • Customers who have their own custom AMR will find a special guide in WORKING WITH NON-EIC AMR on how to integrate their AMR with the system mentioned in this guide. This section also discusses software changes so that this system can be customized to their needs.

Overview System

  • Figure shows a high-level system block diagram of an AMR navigation system based on ToF. The entire software stack is designed with the Robot Operating System (ROS). In our AMR, the AGX Orin kit served as the core processor, on which all the ROS2 Humble nodes through docker ran, and the AMR's motion was controlled. As external sensors, EVAL-ADTF3175D-NXZ and ADIS16470 were connected to AGX Orin. The EVAL-ADTF3175D-NXZ is equipped with an I.MX8 embedded board that includes sensor driver and ROS node packages. It is USB-connected to the AGX Orin and publishes all topics in ROS1 format.

image

AMR Navigation system block diagram

  • Because the system was developed in ROS2, we used the ros1 bridge package inside AGX Orin to port ToF's ROS1 topics to ROS2. Other ROS2 Humble nodes that are used for navigation include the RTAB-Map node, the ROBOT LOCALIZATION node, the NAV2 node, and the IMU Driver node are running inside ROS2 humble docker container as shown in above Figure.

  • In EIC developed AMR, the lower-level motor control and wheel odometry was handled using micro-ROS agent. On Jetson AGX Orin, there was a micro-ROS agent running which communicates with a microcontroller over the serial interface. Furthermore, microcontroller sends the control signal coming from Jetson to the motor driver and gives wheel encoder feedback to Jetson. This setup is applicable to only EIC developed AMR. For any custom AMR the setup for handling lower-level motor control and wheel encoder feedback mechanism might differ. For the detail one can refer blog: click here

Note : RTAB-Map takes external odometry as input to utilize its SLAM (Simultaneous Localization and Mapping) algorithm. In EIC developed AMR, we used wheel odometry as an external odometry source. We used sensor fusion to improve the odometry by combining IMU data with wheel odometry using ROBOT_LOCALIZATION (EKF) package.

Clone this wiki locally