ubuntu20.08下使用realsense过程记录
介绍
在ubuntu20.08中使用realsenseD435i,利用ros内工具实现realsense标定等功能,前提:
-
已安装ros
-
USB3.0接口 [目的是减少软件包报错几率]
一、安装SDK
1.注册公钥
终端输入:
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE
2.将服务器添加到存储库列表中
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
3.安装库
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
4.安装开发者和调试包
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
5.测试SDK
连接相机至主机USB3.0接口,运行指令:
realsense-viewer
打开软件界面即成功。
二、下载realsense2_camera包
1.下载包
根据产品型号选择所需的功能包,这里由于我使用的是D435i,因此下载的是二代功能包。
二代功能包支持的相机型号见:ros官方wiki。
终端运行:
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
2.测试包
roslaunch realsense2_camera rs_camera.launch
出现报错信息如下:
[ERROR] [1662969183.404807328]: Failed to load nodelet [/camera/realsense2_camera] of type [realsense2_camera/RealSenseNodeFactory] even after refreshing the cache: Failed to load library /opt/ros/noetic/lib//librealsense2_camera.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = librealsense2.so.2.50: cannot open shared object file: No such file or directory)
[ERROR] [1662969183.404832682]: The error before refreshing the cache was: Failed to load library /opt/ros/noetic/lib//librealsense2_camera.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = librealsense2.so.2.50: cannot open shared object file: No such file or directory)
[FATAL] [1662969183.405015740]: Failed to load nodelet '/camera/realsense2_camera` of type `realsense2_camera/RealSenseNodeFactory` to manager `realsense2_camera_manager'
[camera/realsense2_camera-2] process has died [pid 16922, exit code 255, cmd /opt/ros/noetic/lib/nodelet/nodelet load realsense2_camera/RealSenseNodeFactory realsense2_camera_manager __name:=realsense2_camera __log:=/home/jzd/.ros/log/163d27fa-324b-11ed-afdc-0fecde74814b/camera-realsense2_camera-2.log].
log file: /home/jzd/.ros/log/163d27fa-324b-11ed-afdc-0fecde74814b/camera-realsense2_camera-2*.log
大意是找不到realsense2_camera包,原因是ros的工作空间目录没刷新。
因此需要找到安装realsense2_camera包的根目录,载入包内的setup.bash文件。我的realsense2_camera包是下载在catkin_ws这个文件夹下的,所以我的命令如下:
终端执行:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
这两行代码允许终端启动时自动将setup.bash文件载入缓存,这样就不需要每次打开终端都要再次载入。
再次尝试启动节点:
roslaunch realsense2_camera rs_camera.launch
成功启动。查看节点运行情况:
rostopic list
输出如下:
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/color/metadata
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/depth/metadata
/camera/extrinsics/depth_to_color
/camera/motion_module/parameter_descriptions
/camera/motion_module/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/auto_exposure_roi/parameter_descriptions
/camera/rgb_camera/auto_exposure_roi/parameter_updates
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/camera/stereo_module/auto_exposure_roi/parameter_descriptions
/camera/stereo_module/auto_exposure_roi/parameter_updates
/camera/stereo_module/parameter_descriptions
/camera/stereo_module/parameter_updates
/diagnostics
/rosout
/rosout_agg
/tf
/tf_static
3.激活相关话题
发现在list中缺乏imu话题,需要在launch文件中手动修改相关节点为true。
当然,如果不需要使用imu,或者realsense设备不支持imu,完全可以跳过此步骤。
相关配置在rs_camera.launch(opt/ros/noetic/share/realsense2_camera/)中修改,该文件没有写入权限,需要首先进行写权限赋予,在该文件所在目录打开终端并执行:
chmod 777 rs_camera.launch
之后打开文件进行下列项的修改:
//打开imu
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
//联合方式copy或linear_interpolation
<arg name="unite_imu_method" default="linear_interpolation"/>
//时间戳同步
<arg name="enable_sync" default="true"/>
再次查看节点运行情况:
rostopic list
相关节点已激活:
/camera/accel/imu_info
/camera/accel/metadata
/camera/accel/sample
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/color/metadata
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/depth/metadata
/camera/extrinsics/depth_to_color
/camera/extrinsics/depth_to_infra1
/camera/extrinsics/depth_to_infra2
/camera/gyro/imu_info
/camera/gyro/metadata
/camera/gyro/sample
/camera/infra1/camera_info
/camera/infra1/image_rect_raw
/camera/infra1/image_rect_raw/compressed
/camera/infra1/image_rect_raw/compressed/parameter_descriptions
/camera/infra1/image_rect_raw/compressed/parameter_updates
/camera/infra1/image_rect_raw/compressedDepth
/camera/infra1/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra1/image_rect_raw/compressedDepth/parameter_updates
/camera/infra1/image_rect_raw/theora
/camera/infra1/image_rect_raw/theora/parameter_descriptions
/camera/infra1/image_rect_raw/theora/parameter_updates
/camera/infra1/metadata
/camera/infra2/camera_info
/camera/infra2/image_rect_raw
/camera/infra2/image_rect_raw/compressed
/camera/infra2/image_rect_raw/compressed/parameter_descriptions
/camera/infra2/image_rect_raw/compressed/parameter_updates
/camera/infra2/image_rect_raw/compressedDepth
/camera/infra2/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra2/image_rect_raw/compressedDepth/parameter_updates
/camera/infra2/image_rect_raw/theora
/camera/infra2/image_rect_raw/theora/parameter_descriptions
/camera/infra2/image_rect_raw/theora/parameter_updates
/camera/infra2/metadata
/camera/motion_module/parameter_descriptions
/camera/motion_module/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/auto_exposure_roi/parameter_descriptions
/camera/rgb_camera/auto_exposure_roi/parameter_updates
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/camera/stereo_module/auto_exposure_roi/parameter_descriptions
/camera/stereo_module/auto_exposure_roi/parameter_updates
/camera/stereo_module/parameter_descriptions
/camera/stereo_module/parameter_updates
/diagnostics
/rosout
/rosout_agg
/tf
/tf_static
三、查看相机内参
执行:
roslaunch realsense2_camera rs_camera.launch
rostopic echo /camera/color/camera_info
输出为:
header:
seq: 404
stamp:
secs: 1663075673
nsecs: 569769621
frame_id: "camera_color_optical_frame"
height: 720
width: 1280
distortion_model: "plumb_bob"
D: [0.0, 0.0, 0.0, 0.0, 0.0]
K: [926.9201049804688, 0.0, 652.867919921875, 0.0, 926.822021484375, 359.2794189453125, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [926.9201049804688, 0.0, 652.867919921875, 0.0, 0.0, 926.822021484375, 359.2794189453125, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 0
binning_y: 0
roi:
x_offset: 0
y_offset: 0
height: 0
width: 0
do_rectify: False
---
D:表示相机的失真系数,其参数分别是(k1, k2, t1, t2, k3)
K:内参矩阵,其参数(fx,0,cx,0,fy,cy,0,0,1)
R: 3*3的旋转矩阵,仅对双目相机有效,使左右极线平行
P: 投影矩阵,其参数分别是(fx’,0,cx’, Tx,0,fy,‘cy’,Ty,0,0,1,0)在单目相机中, T x = T y = 0 Tx=Ty=0 Tx=Ty=0