1. Jetson TX2与Realsense D435i环境搭建在嵌入式平台上跑SLAM算法第一步就是搞定硬件和软件的配合。我花了整整两周时间折腾Jetson TX2和Realsense D435i的配置踩了不少坑现在把这些经验都分享给你。1.1 硬件准备与系统配置Jetson TX2这个嵌入式开发板性能确实强悍但它的Ubuntu系统和我们平时用的PC版有些不同。NVIDIA给它定制了L4T内核这就导致很多常规安装方法在这里会翻车。我建议直接用JetPack 3.3刷机配套的Ubuntu 16.04和ROS Kinetic是最稳定的组合。Realsense D435i这个深度相机特别适合SLAM应用它自带IMU模块能同时获取深度图像和惯性数据。连接时要注意使用原装USB3.0线缆长度不要超过1米供电要稳定最好用带外接电源的USB Hub相机固件要升级到最新版可以用realsense-viewer检查1.2 librealsense驱动安装这里有两个方案我都试过方案一二进制安装推荐新手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 xenial main -u sudo apt-get update sudo apt-get install librealsense2-utils librealsense2-dev装完记得插上相机运行realsense-viewer测试能看到深度图像就说明成功了。方案二源码编译适合定制需求这个方法可以指定版本避免后续realsense-ros的兼容问题git clone https://github.com/IntelRealSense/librealsense.git cd librealsense ./scripts/patch-realsense-ubuntu-L4T.sh mkdir build cd build cmake .. -DBUILD_EXAMPLEStrue -DCMAKE_BUILD_TYPErelease -DFORCE_RSUSB_BACKENDfalse -DBUILD_WITH_CUDAtrue make -j$(($(nproc)-1)) sudo make install编译过程大概要30分钟TX2会明显发热建议加个散热风扇。1.3 realsense-ros包装配ROS驱动安装要注意版本匹配我用的组合是librealsense 2.48.0realsense-ros 2.3.1具体步骤mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/IntelRealSense/realsense-ros.git cd realsense-ros git checkout 2.3.1 cd ~/catkin_ws catkin_make -DCATKIN_ENABLE_TESTINGFalse -DCMAKE_BUILD_TYPERelease测试时运行roslaunch realsense2_camera rs_camera.launch如果能看到/camera/color/image_raw等话题就说明装好了。2. RTAB-MAP与OctoMap实战部署2.1 RTAB-MAP安装与配置RTAB-MAP是我在TX2上跑得最稳的SLAM方案内存管理机制特别适合嵌入式设备。安装命令很简单sudo apt-get install ros-kinetic-rtabmap-ros ros-kinetic-robot-localization关键配置在launch文件里我常用的参数组合param nameRGBD/NeighborLinkRefining valuetrue/ param nameRGBD/ProximityBySpace valuetrue/ param nameRGBD/OptimizeFromGraphEnd valuefalse/ param nameMem/STMSize value10/ !-- 限制内存使用 --2.2 OctoMap三维建图OctoMap需要额外安装sudo apt-get install ros-kinetic-octomap*在RTAB-MAP中启用OctoMap输出param nameGrid/3D valuetrue/ param nameGrid/FromDepth valuetrue/ param nameGrid/DepthDecimation value2/ !-- 降低分辨率减轻负载 --实测发现TX2跑OctoMap时CPU占用会飙升到80%建议把Grid/CellSize调到0.05以上建图范围不要超过10米。2.3 性能优化技巧降低分辨率把相机设置为640x480帧率30Hz足够关闭点云可视化RViz里关掉PointCloud2显示能省20%CPU使用IMU辅助配置imu_filter_madgwick节点提升位姿估计稳定性内存限制在rtabmap节点设置Mem/STMSize15防止内存溢出启动完整流程roslaunch realsense2_camera opensource_tracking.launch rosrun imu_filter_madgwick imu_filter_node roslaunch rtabmap_ros rtabmap.launch3. VINS-Mono视觉惯性SLAM实战3.1 依赖项安装VINS-Mono对Eigen版本要求很严格必须≥3.3.4。TX2自带的是3.3.0得手动升级wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz tar -xzf eigen-3.3.7.tar.gz cd eigen-3.3.7 mkdir build cd build cmake .. sudo make install接着安装ceres-solversudo apt-get install libgoogle-glog-dev libatlas-base-dev git clone https://github.com/ceres-solver/ceres-solver.git cd ceres-solver mkdir build cd build cmake .. -DBUILD_TESTINGOFF -DBUILD_EXAMPLESOFF make -j4 sudo make install3.2 参数调优关键点相机-IMU标定修改realsense_color_config.yaml中的参数imu_topic: /camera/imu image_topic: /camera/color/image_raw estimate_td: 0 # 关闭时间戳校准启动文件配置arg nameunite_imu_method defaultlinear_interpolation/ arg nameenable_sync defaulttrue/性能优化在vins_estimator节点的launch文件中添加param namemax_num_iterations value4/ !-- 减少优化迭代次数 -- param namekeyframe_parallax value10.0/ !-- 增大关键帧选择阈值 --3.3 实测效果分析在TX2上跑VINS-MonoCPU占用约60%内存1.5GB。我测试了三种场景桌面小范围精度±2cm漂移很小10米走廊累计误差约5cm动态物体干扰会出现短暂跟踪丢失建议在光线充足的环境使用暗光下特征点提取不稳定。4. ORB-SLAM2深度相机适配4.1 特殊依赖处理ORB-SLAM2需要Pangolin做可视化编译时要注意git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j4常见错误处理usleep报错在System.h开头添加#include unistd.hboost链接错误修改CMakeLists.txt加上-lboost_system4.2 相机参数配置从realsense获取内参rostopic echo /camera/color/camera_info创建D435i.yaml配置文件Camera.fx: 612.88 Camera.fy: 612.90 Camera.cx: 322.27 Camera.cy: 244.79 Camera.width: 640 Camera.height: 4804.3 话题重映射修改ros_rgbd.cc中的订阅话题message_filters::Subscribersensor_msgs::Image rgb_sub(nh, /camera/color/image_raw, 1); message_filters::Subscribersensor_msgs::Image depth_sub(nh, /camera/aligned_depth_to_color/image_raw, 1);4.4 运行与调优启动命令roslaunch realsense2_camera rs_rgbd.launch rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/D435i.yaml优化建议在ORB_SLAM2::System构造函数中设置ORBextractor.nFeatures800修改Tracking.cc中的关键帧插入条件关闭RViz中的特征点可视化5. 多算法性能对比与选型建议5.1 资源占用实测数据算法CPU占用内存占用帧率(FPS)RTAB-MAP65%1.2GB15VINS-Mono75%1.5GB20ORB-SLAM285%1.8GB10测试条件640x480分辨率TX2模式设置为MAX-N5.2 精度与稳定性对比RTAB-MAP优势长期运行稳定性好自带回环检测支持三维地图重建VINS-Mono特点IMU融合效果优秀动态场景适应性较强计算量相对较大ORB-SLAM2局限对特征点依赖性强建图功能较弱容易丢失跟踪5.3 场景化选型指南室内服务机器人首选RTAB-MAP建图导航一体化无人机视觉定位用VINS-MonoIMU融合效果好AR/VR应用ORB-SLAM2延迟低适合小范围使用在TX2这种资源受限平台我建议优先考虑RTAB-MAP它的自适应内存管理机制确实很实用。如果对实时性要求高可以试试VINS-Mono的轻量版配置。ORB-SLAM2更适合作为算法研究参考实际部署需要做大量优化。