Setting a Jetson AGX Orin for robotics development (III) - event-based SLAM
Welcome to the third post on setting up a Jetson AGX Orin for robotics development! Today, we will focus on setting up a set of state-of-the-art methods for event-based localization. The structure of the post goes as follows:
Reminder: For this project I will be using the JETSON AGX ORIN DEVELOPER KIT. Some things to take into account about this board:
- It is an ARM64 architecture.
- It has Ubuntu 20.04 installed
- It comes with the Nvidia Jetpack 5.1.2
- It has ROS Noetic
1. ESVO-Extension
This installation has been successfully tested in Ubuntu 20.04 with ROS Noetic, OpenCV 4.5.4 and Eigen 3.4.
1.1 Prerequisites
sudo apt-get install libqhull-dev python3-pycryptodome
pip3 install python-gnupg
- FLANN library == 1.7.0. Clone and compile it in your favourite folder:
git clone https://github.com/flann-lib/flann.git cd flann mkdir build && cd build cmake .. make -j$(nproc) sudo make install
- Bullet library . Clone and compile it in your favourite folder:
git clone https://github.com/bulletphysics/bullet3.git cd bullet3 mkdir build && cd build cmake .. make -j$(nproc) sudo make install
- PCL library v. 1.10. Follow the installation instructions here. When building, ensure that it is compiled with QHull as follows:
cmake -DWITH_QHULL=TRUE ..
- ROS Noetic dependencies. I will install this in my
ros_noetic_ws
, therefore, all the comands for each package below are preceded by acd ros_noetic_ws/src
.- vision_opencv
git clone https://github.com/ros-perception/vision_opencv.git cd vision_opencv && git checkout noetic cd ../..
- pcl_msgs
git clone https://github.com/ros-perception/pcl_msgs.git cd pcl_msgs && git checkout noetic-devel
- geometry2
git clone https://github.com/ros/geometry2.git cd geometry2 && git checkout noetic-devel
- perception_pcl
git clone https://github.com/ros-perception/perception_pcl.git cd perception_pcl && git checkout melodic-devel
- vision_opencv
- Other ROS dependencies. These are the dependencies that I will install in my
catkin_ws
. Similarly, all the comands for each package below are preceded by acd catkin_ws/src
.- cnpy_catkin
git clone https://github.com/uzh-rpg/cnpy_catkin.git
- cnpy_catkin
1.2 Installation
ESVO_extension
is a ROS package that I will intall in my catkin_ws
workspace.
cd catkin_ws/src
git clone https://github.com/olayasturias/ESVO_extension.git
cd ..
catkin build esvo_time_surface esvo_core
For installing it and other dependencies, follow the installation instructions in the repo.
2. EventEMin
2.1 Dependencies
sudo apt install libomp-dev
sudo apt-get install libgsl-dev
2.2 Installation
This worked straight away. The repo claims that it needs an Eigen3 version lower (but not including) 3.4. However, I haven’t had any trouble with Eigen 3.4 so far!
cd ~/catkin_ws/src
git clone --recurse-submodules https://github.com/ImperialCollegeLondon/event_emin_ros.git
cd ..
catkin build event_emin_ros
3. EVO
3.1 Dependencies
The command ./rpg_dvs_evo_open/install.sh install the dependencies. However, some need to be installed manually (only applicable for ARM architectures though):
sudo apt-get install libfftw3-dev
cd ~/catkin_ws/src
git clone https://github.com/uzh-rpg/fast_neon.git
git checkout test/aarch64-compilation
cd ../..
catkin build fast
3.2 Installation
cd src/ && https://github.com/uzh-rpg/rpg_dvs_evo_open.git