一、硬件說(shuō)明
可以在官網(wǎng)查看各個(gè)類型的相機(jī)說(shuō)明
Intel? RealSense? Computer Vision - Depth and Tracking cameras
目前實(shí)驗(yàn)室常用的是 D400 系列的相機(jī),如 D435i相機(jī),D455相機(jī)等,本文主要使用 D435i 相機(jī),如下圖所示
D435i 相機(jī)是一個(gè)RGB-D相機(jī),也就是我們常說(shuō)的深度相機(jī),目前深度相機(jī)的實(shí)現(xiàn)原理主要分為三種:分別是結(jié)構(gòu)光,Tof,雙目成像。
二、安裝 realsense 驅(qū)動(dòng)
參考 librealsense 的 github 官方教程
librealsense/doc/distribution_linux.md at master · IntelRealSense/librealsense · GitHub
創(chuàng)建服務(wù)器公鑰
sudo mkdir -p /etc/apt/keyrings
curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null
確保安裝了?apt-transport-https?
sudo apt-get install apt-transport-https
將服務(wù)添加到倉(cāng)庫(kù)列表中:
echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] https://librealsense.intel.com/Debian/apt-repo `lsb_release -cs` main" | \
sudo tee /etc/apt/sources.list.d/librealsense.list
sudo apt-get update
部署 ?librealsense2 udev 規(guī)則,構(gòu)建和激活內(nèi)核模塊、運(yùn)行庫(kù)以及可執(zhí)行演示和工具:
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
安裝開發(fā)程序包和調(diào)試程序包:
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
確認(rèn)成功安裝 librealsense :
realsense-viewer
如果需要安裝指定版本的 librealsene(2.54.1 之后 的版本不支持 realsense t265 相機(jī)),參考
realsense-viewer 不識(shí)別 T265——Realsense SDK 在 v2.54.1 版本以后不再支持T265相機(jī)的解決辦法_realsense t265_看我放個(gè)大招的博客-CSDN博客
三、安裝 realsense-ros
作用:將 realsense 數(shù)據(jù)轉(zhuǎn)換為 ros 數(shù)據(jù)并發(fā)布到 ros 話題中,相當(dāng)于realsense 和 ros 的橋梁。
參考 realsense-ros 的?github 官方教程:
GitHub - IntelRealSense/realsense-ros at ros1-legacy
官方提供了直接方式和源碼方式兩種方法安裝 realsense-ros
3.1 直接方式安裝
終端輸入:
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
其中 $ROS_DISTRO 為自己的 ros 版本, Ubuntu 18.04 對(duì)應(yīng) melodic,Ubuntu 20.04 對(duì)應(yīng) noetic,這種方法的安裝路徑為
/opt/ros/noetic/share/realsense2_camera/
3.2 源碼方式安裝
創(chuàng)建工作目錄
mkdir -p ~/realsense_ws/src
cd ~/realsense_ws/src/
下載源碼
git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..
請(qǐng)確保安裝了 ros 軟件包 ddynamic_reconfigure, 如果沒(méi)有安裝,可以通過(guò) apt 安裝
sudo apt-get install ros-$ROS_DISTRO-ddynamic-reconfigure
或者將其源碼下載到當(dāng)前工作目錄
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
注意,這里如果通過(guò) apt 安裝了?ddynamic_reconfigure 就不要再下載源碼到工作空間一起編譯了,可能會(huì)沖突報(bào)錯(cuò)。
接下來(lái)編譯工作空間
catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
最后將其加到 ~/.basrc 文件中
echo "source ~/realsense_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
這兩種方法選擇一種安裝就可以。
3.3 修改配置文件
首先通過(guò) ros 啟動(dòng)相機(jī),終端輸入
roslaunch realsense2_camera rs_camera.launch
查看能否收到相機(jī)數(shù)據(jù)。
一般來(lái)說(shuō),安裝完成后可能會(huì)出現(xiàn) ros 能接收到話題但是收不到數(shù)據(jù)的情況。
這時(shí)需要修改?/opt/ros/noetic/share/realsense2_camera/rs_camera.launch 文件。
調(diào)整 圖像尺寸 :
<arg name="infra_width" default="640"/>
<arg name="infra_height" default="480"/>
打開 雙目相機(jī) 數(shù)據(jù),
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
打開深度相機(jī)
<arg name="depth_width" default="640"/>
<arg name="depth_height" default="480"/>
<arg name="enable_depth" default="true"/>
打開 陀螺儀和加速度計(jì) 數(shù)據(jù)
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
設(shè)置雙目相機(jī)、深度相機(jī)、陀螺儀和加速度計(jì)的頻率
<arg name="fisheye_fps" default="-1"/>
<arg name="depth_fps" default="30"/>
<arg name="infra_fps" default="30"/>
<arg name="color_fps" default="-1"/>
<arg name="gyro_fps" default="400"/>
<arg name="accel_fps" default="400"/>
打開 imu 數(shù)據(jù)
<arg name="unite_imu_method" default="linear_interpolation"/>
關(guān)閉結(jié)構(gòu)光(光斑),添加
<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>
也可以直接粘貼如下代碼:
<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="respawn" default="false"/>
<arg name="fisheye_width" default="-1"/>
<arg name="fisheye_height" default="-1"/>
<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="confidence_width" default="-1"/>
<arg name="confidence_height" default="-1"/>
<arg name="enable_confidence" default="false"/>
<arg name="confidence_fps" default="-1"/>
<arg name="infra_width" default="640"/>
<arg name="infra_height" default="480"/>
<arg name="enable_infra" default="false"/>
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
<arg name="infra_rgb" default="false"/>
<arg name="color_width" default="-1"/>
<arg name="color_height" default="-1"/>
<arg name="enable_color" default="false"/>
<arg name="fisheye_fps" default="-1"/>
<arg name="depth_fps" default="30"/>
<arg name="infra_fps" default="30"/>
<arg name="color_fps" default="-1"/>
<arg name="gyro_fps" default="400"/>
<arg name="accel_fps" default="400"/>
<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="allow_no_texture_points" default="false"/>
<arg name="ordered_pc" default="false"/>
<arg name="enable_sync" default="false"/>
<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="reconnect_timeout" default="6.0"/>
<arg name="wait_for_device_timeout" default="-1.0"/>
<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="stereo_module/exposure/1" default="7500"/>
<arg name="stereo_module/gain/1" default="16"/>
<arg name="stereo_module/exposure/2" default="1"/>
<arg name="stereo_module/gain/2" default="16"/>
<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="respawn" value="$(arg respawn)"/>
<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="reconnect_timeout" value="$(arg reconnect_timeout)"/>
<arg name="wait_for_device_timeout" value="$(arg wait_for_device_timeout)"/>
<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="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
<arg name="stereo_module/gain/1" value="$(arg stereo_module/gain/1)"/>
<arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
<arg name="stereo_module/gain/2" value="$(arg stereo_module/gain/2)"/>
<arg name="allow_no_texture_points" value="$(arg allow_no_texture_points)"/>
<arg name="ordered_pc" value="$(arg ordered_pc)"/>
</include>
</group>
</launch>
最后終端輸入文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-745011.html
roslaunch realsense2_camera rs_camera.launch
就能收到相機(jī)數(shù)據(jù)了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745011.html
到了這里,關(guān)于Ubuntu 20.04 配置 Realsense的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!