1.配置Jetpack
通过配置jetpack可以完成对cuda,cudann,TensorRT等基本环境的配置
官网教程Getting Started with Jetson AGX Orin Developer Kit
https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit
sudo apt upgrade
sudo apt update
sudo apt dist-upgrade #!!!不要更新硬件
sudo reboot
sudo apt install nvidia-jetpack
sudo apt dist-upgrade
这句,可以执行or不执行,我执行的很慢然后强制中断后,Jetson就开不了机了,后来是找厂家重新刷机才解决的…
为什么要刷机?因为jetson与普通ubuntu重装系统的方法不一样,他通过刷机让Jetson安装上Ubuntu20.04系统和各类自带的组件,刷机教程:https://blog.csdn.net/weixin_53776054/article/details/128552701
2.配置ROS & mavros
Jetson AGX ORIN的出厂设置为Ubuntu20,因此需要配置相应的Neotic的ros版本
1)配置基本ros环境
- 配置ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加ROS秘钥
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
- 安装ROS
sudo apt update
sudo apt install ros-noetic-desktop
- 配置ROS的运行环境
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
2)创建ros工作空间
- 创建ROS工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
- 设置ROS环境
source ~/catkin_ws/devel/setup.bash
3)配置mavros
sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras ros-noetic-control-toolbox
cd /opt/ros/kinetic/lib/mavros
sudo ./install_geographiclib_datasets.sh
报错FCU: DeviceError:serial:open: Permission denied
解决方法参考
给设备串口添加用户组权限即可sudo chmod 777 /dev/ttyACM0
3.配置VINS-FUSION-GPU
vins-fusion-gpu链接:https://github.com/pjrambo/VINS-Fusion-gpu
官方vins-fusion-gpu已经在ubuntu18和opencv3.4上进行了测试,迁移到ubuntu20和opencv4需要进行一定修改
卸载原来的ceres命令,cd到build文件夹
sudo make uninstall
1)安装Ceres
注意下载Ceres1.14.0版本 ,Ceres2.1.0亲测失败,会报错缺少absl
- 安装依赖
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
- 源码编译安装Ceres
#下载安装包
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
#解压安装包
tar -xvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
sudo make
sudo make test
sudo make install
2)安装Vins-Fusion-gpu
网上有关资料很少,可以参考ubuntu20配置普通版本的vins
- 下载源码
cd ~/catkin_ws/src
git clone https://github.com/pjrambo/VINS-Fusion-gpu
- 添加头文件
在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>
- 修改opencv3的写法到opencv4
【这里建议用vscode批量修改,vscode请下载arm64.deb版本】
在文件中搜索CV_FONT_HERSHEY_SIMPLEX
并替换成cv::FONT_HERSHEY_SIMPLEX
在文件中搜索CV_BGR2GRAY
并替换成cv::COLOR_BGR2GRAY
在文件中搜索CV_GRAY2BGR
并替换成cv::COLOR_GRAY2BGR
在文件中搜索CV_RGB2GRAY
并替换成cv::COLOR_RGB2GRAY
在文件中搜索CV_GRAY2RGB
并替换成cv::COLOR_GRAY2RGB
在文件中搜索CV_LOAD_IMAGE_GRAYSCALE
并替换成cv::IMREAD_GRAYSCALE
在文件中搜索CV_FONT_HERSHEY_SIMPLEX
并替换成cv::FONT_HERSHEY_SIMPLEX
- 编译
cd catkin_ws
cakin_make
4.D435i相机配置
需要先配置realsense的SDK,再配置reslsense-ros
- 配置realsense SDK
【方法一】失败
#注册服务器的公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
#将服务器添加到存储库列表
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
#安装库(如果升级包,请参阅下面的部分)
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
#可选择安装开发人员和调试包
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
【方法二】成功
#1)下载源码
git clone -b v2.51.1 https://github.com/IntelRealSense/librealsense.git
#2)安装依赖包
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
#3)安装权限脚本
cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
#4)编译
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
#5)使用
realsense-viewer
- 配置realsense-ros
源码配置,记得切换到ros1分支
https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy
直接apt-get安装
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-$ROS_DISTRO-realsense2-description
tju@tju-desktop:~$ rospack find realsense2_camera
/opt/ros/noetic/share/realsense2_camera
5.vins运行测试
rs_camera_vins.launch
<launch>
<arg name="serial_no" default=""/>
<arg name="usb_port_id" default=""/>
<arg name="device_type" default=""/>
<arg name="json_file_path" default=""/>
<arg name="camera" default="camera"/>
<arg name="tf_prefix" default="$(arg camera)"/>
<arg name="external_manager" default="false"/>
<arg name="manager" default="realsense2_camera_manager"/>
<arg name="fisheye_width" default="640"/>
<arg name="fisheye_height" default="480"/>
<arg name="enable_fisheye" default="false"/>
<arg name="depth_width" default="640"/>
<arg name="depth_height" default="480"/>
<arg name="enable_depth" default="true"/>
<arg name="infra_width" default="640"/>
<arg name="infra_height" default="480"/>
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
<arg name="color_width" default="640"/>
<arg name="color_height" default="480"/>
<arg name="enable_color" default="true"/>
<arg name="fisheye_fps" default="30"/>
<arg name="depth_fps" default="30"/>
<arg name="infra_fps" default="30"/>
<arg name="color_fps" default="30"/>
<arg name="gyro_fps" default="200"/>
<arg name="accel_fps" default="200"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
<arg name="enable_pointcloud" default="false"/>
<arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
<arg name="pointcloud_texture_index" default="0"/>
<arg name="enable_sync" default="true"/>
<arg name="align_depth" default="true"/>
<arg name="publish_tf" default="true"/>
<arg name="tf_publish_rate" default="0"/>
<arg name="filters" default=""/>
<arg name="clip_distance" default="-2"/>
<arg name="linear_accel_cov" default="0.01"/>
<arg name="initial_reset" default="false"/>
<arg name="unite_imu_method" default="linear_interpolation"/>
<arg name="topic_odom_in" default="odom_in"/>
<arg name="calib_odom_file" default=""/>
<arg name="publish_odom_tf" default="true"/>
<arg name="allow_no_texture_points" default="false"/>
<arg name="emitter_enable" default="false"/>
<!-- rosparam set /camera/stereo_module/emitter_enabled false -->
<rosparam>
/camera/stereo_module/emitter_enabled: 0
</rosparam>
<rosparam if="$(arg emitter_enable)">
/camera/stereo_module/emitter_enabled: 1
</rosparam>
<group ns="$(arg camera)">
<include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg name="tf_prefix" value="$(arg tf_prefix)"/>
<arg name="external_manager" value="$(arg external_manager)"/>
<arg name="manager" value="$(arg manager)"/>
<arg name="serial_no" value="$(arg serial_no)"/>
<arg name="usb_port_id" value="$(arg usb_port_id)"/>
<arg name="device_type" value="$(arg device_type)"/>
<arg name="json_file_path" value="$(arg json_file_path)"/>
<arg name="enable_pointcloud" value="$(arg enable_pointcloud)"/>
<arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
<arg name="pointcloud_texture_index" value="$(arg pointcloud_texture_index)"/>
<arg name="enable_sync" value="$(arg enable_sync)"/>
<arg name="align_depth" value="$(arg align_depth)"/>
<arg name="fisheye_width" value="$(arg fisheye_width)"/>
<arg name="fisheye_height" value="$(arg fisheye_height)"/>
<arg name="enable_fisheye" value="$(arg enable_fisheye)"/>
<arg name="depth_width" value="$(arg depth_width)"/>
<arg name="depth_height" value="$(arg depth_height)"/>
<arg name="enable_depth" value="$(arg enable_depth)"/>
<arg name="color_width" value="$(arg color_width)"/>
<arg name="color_height" value="$(arg color_height)"/>
<arg name="enable_color" value="$(arg enable_color)"/>
<arg name="infra_width" value="$(arg infra_width)"/>
<arg name="infra_height" value="$(arg infra_height)"/>
<arg name="enable_infra1" value="$(arg enable_infra1)"/>
<arg name="enable_infra2" value="$(arg enable_infra2)"/>
<arg name="fisheye_fps" value="$(arg fisheye_fps)"/>
<arg name="depth_fps" value="$(arg depth_fps)"/>
<arg name="infra_fps" value="$(arg infra_fps)"/>
<arg name="color_fps" value="$(arg color_fps)"/>
<arg name="gyro_fps" value="$(arg gyro_fps)"/>
<arg name="accel_fps" value="$(arg accel_fps)"/>
<arg name="enable_gyro" value="$(arg enable_gyro)"/>
<arg name="enable_accel" value="$(arg enable_accel)"/>
<arg name="publish_tf" value="$(arg publish_tf)"/>
<arg name="tf_publish_rate" value="$(arg tf_publish_rate)"/>
<arg name="filters" value="$(arg filters)"/>
<arg name="clip_distance" value="$(arg clip_distance)"/>
<arg name="linear_accel_cov" value="$(arg linear_accel_cov)"/>
<arg name="initial_reset" value="$(arg initial_reset)"/>
<arg name="unite_imu_method" value="$(arg unite_imu_method)"/>
<arg name="topic_odom_in" value="$(arg topic_odom_in)"/>
<arg name="calib_odom_file" value="$(arg calib_odom_file)"/>
<arg name="publish_odom_tf" value="$(arg publish_odom_tf)"/>
<arg name="allow_no_texture_points" value="$(arg allow_no_texture_points)"/>
</include>
</group>
</launch>
仿真测试参考:https://www.yuque.com/xtdrone/manual_cn/vio
实际测试参考:https://blog.csdn.net/qq_42800654/article/details/109393646
数据集测试
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS_Lite_GPU/config/euroc/euroc_stereo_imu_config.yaml
rosbag play ~/Downloads/MH_01_easy.bag
d435i相机测试
roslaunch realsense2_camera rs_camera_vins.launch initial_reset:=true
rosrun vins vins_node ~/catkin_ws/src/VINS_Lite_GPU/config/realsense_d435i/realsense_stereo_imu_config.yaml
查看位姿
rostopic echo /vins_estimator/odometry
rosbag record /camera/imu /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw
6.Zed相机配置
- 查看jetpack版本,我的jetpack版本为5.1.1
sudo apt-cache show nvidia-jetpack
- 查看cuda版本,我的cuda版本为11.4
dpkg -l | grep cuda
- 下载相应版本SDK
SDK:https://www.stereolabs.com/developers/release/对应版本的ZED-SDK【ZED SDK for JetPack 5.1 (L4T 35.2)4.0 (Jetson Xavier, Orin AGX/NX 16GB, CUDA 11.4)】
- 安装测试
#安装
chomd +x xxxx.run
./xxxx.run
#测试
./ZED_Explore
学习资料:https://www.stereolabs.com/docs/get-started-with-zed/