参考文章 :1、 D435i ----- Ubuntu18.04下D435i使用(SDK安装与测试)_d435i使用手册_杰尼君的博客-CSDN博客
VIO视觉无人机室内定点自主飞行(T265+PX4+Mavros+NX)_air 2216电机_小白造飞机的博客-CSDN博客
Ubuntu18.04 安装D435i ROS_哦*&的博客-CSDN博客
一.写在前面
-
硬件配置:
Jeston xavier NX 机载电脑,板载6002E 设备如图:

T265双目摄像头

二.Realsense SDK和Realsense-ros的介绍
在我看来,Realsense SDK是我们使用T265所需的驱动,如我们打开官方软件去观看位姿和双目。Realsense-ros则是我们将T265与ros配合使用的必要驱动。
同时我们需要注意的是Realsense SDK(librealsense)和Realsense-ros之间是有版本要求的,如果版本不对应,使用T265是存在问题,如运行相关例程是显示没有插上T265。
如何查看Realsense SDK(librealsense)和Realsense-ros两者之间的对应版本:
Releases · IntelRealSense/realsense-ros · GitHub

第一行适配ros1版本,同时realsense-ros版本为2.3.2;支持的realsense-sdk版本为2.50.0;支持的
ros1版本有Noetic、Melodic、Kinetic。
接下来我会把我安装时碰到的弯路。尽量都复现出来,让大家少走弯路,有更多时间找女朋友。
三.Realsense SDK安装
还是源码安装,这里下载 标签v2.48.0,经过我一段时间测试,2.50.0在后面会有一些奇怪的问题
git clone -b v2.48.0 https://github.com/IntelRealSense/librealsense
cd librealsense
下载依赖拔掉相机
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
安装权限脚本
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
编译安装
mkdir build
cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true
sudo make uninstall
make clean && make -j8
sudo make install
测试安装
cd librealsense/build/examples/capture
./rs-capture
realsense-viewer
四.realsense-ros 的安装
注意:catkin_make 这步命令如果错了,可能是编译的地点错误,进入上一级目录,realsense-ros下编译
安装
cd ~/control/ROS
git clone -b v2.3.1 https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
cd realsense-ros
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
sudo gedit ~/.bashrc
source ~/control/ROS/realsense-ros/devel/setup.bash
测试安装
source ~/control/ROS/realsense-ros/devel/setup.bash
roslaunch realsense2_camera rs_camera.launch
rostopic list
修改rs_camera.launch
我们在后续vins实际标定时,需要关闭结构光,这里需要对rs_camera.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="output" default="screen"/>
<arg name="fisheye_width" default="1280"/>
<arg name="fisheye_height" default="720"/>
<arg name="enable_fisheye" default="false"/>
<arg name="depth_width" default="1280"/>
<arg name="depth_height" default="720"/>
<arg name="enable_depth" default="true"/>
<arg name="confidence_width" default="1280"/>
<arg name="confidence_height" default="720"/>
<arg name="enable_confidence" default="true"/>
<arg name="confidence_fps" default="15"/>
<arg name="infra_width" default="1280"/>
<arg name="infra_height" default="720"/>
<arg name="enable_infra" default="true"/>
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
<arg name="infra_rgb" default="false"/>
<arg name="color_width" default="1280"/>
<arg name="color_height" default="720"/>
<arg name="enable_color" default="true"/>
<arg name="fisheye_fps" default="15"/>
<arg name="depth_fps" default="15"/>
<arg name="infra_fps" default="15"/>
<arg name="color_fps" default="15"/>
<arg name="gyro_fps" default="200"/>
<arg name="accel_fps" default="250"/>
<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="false"/>
<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="copy"/>
<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="output" value="$(arg output)"/>
<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="confidence_width" value="$(arg confidence_width)"/>
<arg name="confidence_height" value="$(arg confidence_height)"/>
<arg name="enable_confidence" value="$(arg enable_confidence)"/>
<arg name="confidence_fps" value="$(arg confidence_fps)"/>
<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_infra" value="$(arg enable_infra)"/>
<arg name="enable_infra1" value="$(arg enable_infra1)"/>
<arg name="enable_infra2" value="$(arg enable_infra2)"/>
<arg name="infra_rgb" value="$(arg infra_rgb)"/>
<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>
修改的是
<!-- 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>
参考文章:Realsense d435i启动双目并关闭IR结构光(保证管用)_d435i关闭结构光_SJTU_YJ的博客-CSDN博客
Realsense D435i关闭IR结构光_Hecttttttttt的博客-CSDN博客
五.安装过程中的错误
1.错误CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100 (message):
This workspace contains non-catkin packages in it, and catkin cannot build
a non-homogeneous workspace without isolation. Try the
'catkin_make_isolated' command instead.
Call Stack (most recent call first):
CMakeLists.txt:69 (catkin_workspace)
解决办法删除.packge.xml
2.CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Cmake --version 3.2.1 (ros 安装时会自带cmake(ros-melodic 下载时附带的cmake版本3.10),我们在编译px4会因为cmake的版本错误报错)
千万注意不要着急升级cmake ,如果你的命令有sudo make uninstall ,那样会卸载cmake。所以安装好ros1后正常安装T265,再编译PX4的时候再进行升级
3.wstool下载
解决办法:在我们安装mavros时,会碰到wstool,通过
sudo apt-get install python-wstool
或者 sudo pip install -U wstool 下载
4. ERROR: your rosdep installation has not been initialized yet. Please run:rosdep update
rosdep init
Rosdep update 失败的解决办法
解决办法:【ROS】解决rosdep无法更新、缺少依赖问题 - 知乎
这里再次感谢小鱼,放一下鱼哥的网址
5.Ubuntu 复制和移动文件命令
解决办法:Ubuntu在命令行中复制和移动文件/文件夹到另一个目录中 - 北冥有鱼
Ubuntu删除文件命令
6.
Wget
https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh无法连接的问题
GitHub: Let’s build from here · GitHub无法连接
解决办法:
# 编辑hosts文件
sudo gedit /etc/hosts
# 在hosts中修改或添加下面内容
185.199.110.133 raw.githubusercontent.com
查询网址ip
ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名 (专用于查询网址ip)

我原本以为选个中国的,结果根本不好用,选第一个就行,不行多试几个,反正电信那个就是下不了
7.bash: rosinstall_generator: command not found.
解决:sudo apt-get install rosinstall_generator
8.Mavros catkin_build 出错
两个办法
解除系统限制
c++: internal compiler error: Segmentation fault (program cc1plus) 解决_机器人虎哥的博客-CSDN博客
我改过后还是那样,open files没有变化,那么可以用第二个方法,不要盲目的以为是自己的内存问题,很可能是系统的限制
减少运算核数
Catkin_build -j2
9.PX4固件下载地址
Releases · PX4/PX4-Autopilot · GitHub
10.CMake Error at CMakeLists.txt:1: Parse error. Expected a command name, got unquoted argument with text "/opt/ros/melodic/share/catkin/cmake/toplevel.cmake". -- Configuring incomplete, errors occurred! Invoking "cmake" failed
解决办法: 删去src/下的cmakelists.txt