一、SDK的安装

在安装前一定要确定SDK和realsense相机之间的版本对应的关系,我使用的SDK的版本是:librealsense-2.51.1  对应的ROS的版本是: realsense-ros-4.51.1。

git clone -b v2.51.1 https://github.com/IntelRealSense/librealsense.git 下载太慢的话直接去网站下载源码
1)安装依赖包
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
2)安装权限脚本
cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
3)编译
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
4)使用
realsense-viewer
5)卸载
dpkg -l | grep "realsense" | cut -d " " -f 3 | xargs sudo dpkg --purge

二、realsense_ros2的安装

安装步骤参考以下链接:

GitHub - IntelRealSense/realsense-ros: Intel(R) RealSense(TM) ROS Wrapper for D400 series, SR300 Camera and T265 Tracking Module

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src/
git clone https://github.com/IntelRealSense/realsense-ros.git -b ros2-development
cd ~/ros2_ws
sudo apt-get install python3-rosdep -y
sudo rosdep init # "sudo rosdep init --include-eol-distros" for Eloquent and earlier
rosdep update # "sudo rosdep update --include-eol-distros" for Eloquent and earlier
rosdep install -i --from-path src --rosdistro $ROS_DISTRO --skip-keys=librealsense2 -y
colcon build
ROS_DISTRO=<YOUR_SYSTEM_ROS_DISTRO>  # set your ROS_DISTRO: humble, galactic, foxy, eloquent, dashing
添加到终端环境中
source /opt/ros/$ROS_DISTRO/setup.bash
cd ~/ros2_ws
. install/local_setup.bash
安装成功后测试:
ros2 launch realsense2_camera rs_launch.py
执行的方法有:
ros2 run realsense2_camera realsense2_camera_node --ros-args -p enable_color:=false -p spatial_filter.enable:=true -p temporal_filter.enable:=true
ros2 launch realsense2_camera rs_launch.py
ros2 launch realsense2_camera rs_launch.py depth_module.profile:=1280x720x30 pointcloud.enable:=true

三、相机相关话题的研究

3.1 开启IMU

ros2 launch realsense2_camera rs_launch.py pointcloud.enable:=true enable_gyro:=true enable_accel:=true
或在运行时使用以下命令来启用加速器和陀螺仪:
ros2 param set /camera/camera enable_accel true
ros2 param set /camera/camera enable_gyro true

3.2 相机参数设置

对于整个参数类型列表ros2 param list。ros2 param get <node> <parameter_name>例如,读取参数值使用:ros2 param get /camera/camera depth_module.emitter_on_off 为参数使用设置新值ros2 param set <node> <parameter_name> <value>即ros2 param set /camera/camera depth_module.emitter_on_off true

3.2 相机延迟测试工具的开启

为了了解延迟减少情况,可以通过启动文件使用帧延迟报告工具。启动文件将包装器和帧延迟报告器工具组件加载到单个容器中(因此是相同的过程)。该工具打印出每帧的帧延迟 ( now - frame.timestamp)。

除非要求,否则不会构建该工具。在构建期间打开BUILD_TOOLS以使其可用:

colcon build --cmake-args '-DBUILD_TOOLS=ON'

launch 文件接受一个参数 ,intra_process_comms控制是否开启零拷贝。默认开启:

ros2 launch realsense2_camera rs_intra_process_demo_launch.py intra_process_comms:=true

四、打开需要的话题 及关闭激光

# Copyright 2023 Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License."""Launch realsense2_camera node."""
import os
import yaml
from launch import LaunchDescription
import launch_ros.actions
from launch.actions import DeclareLaunchArgument, OpaqueFunction
from launch.substitutions import LaunchConfigurationconfigurable_parameters = [{'name': 'camera_name',                  'default': 'camera', 'description': 'camera unique name'},{'name': 'serial_no',                    'default': "''", 'description': 'choose device by serial number'},{'name': 'usb_port_id',                  'default': "''", 'description': 'choose device by usb port id'},{'name': 'device_type',                  'default': "''", 'description': 'choose device by type'},{'name': 'config_file',                  'default': "''", 'description': 'yaml config file'},{'name': 'unite_imu_method',             'default': "0", 'description': '[0-None, 1-copy, 2-linear_interpolation]'},{'name': 'json_file_path',               'default': "''", 'description': 'allows advanced configuration'},{'name': 'log_level',                    'default': 'info', 'description': 'debug log level [DEBUG|INFO|WARN|ERROR|FATAL]'},{'name': 'output',                       'default': 'screen', 'description': 'pipe node output [screen|log]'},{'name': 'depth_module.profile',         'default': '0,0,0', 'description': 'depth module profile'},                           {'name': 'enable_depth',                 'default': 'false', 'description': 'enable depth stream'},{'name': 'rgb_camera.profile',           'default': '0,0,0', 'description': 'color image width'},{'name': 'enable_color',                 'default': 'false', 'description': 'enable color stream'},{'name': 'enable_infra1',                'default': 'true', 'description': 'enable infra1 stream'},{'name': 'enable_infra2',                'default': 'true', 'description': 'enable infra2 stream'},{'name': 'infra_rgb',                    'default': 'false', 'description': 'enable infra2 stream'},{'name': 'enable_fisheye1',              'default': 'true', 'description': 'enable fisheye1 stream'},{'name': 'enable_fisheye2',              'default': 'true', 'description': 'enable fisheye2 stream'},{'name': 'enable_confidence',            'default': 'true', 'description': 'enable depth stream'},{'name': 'gyro_fps',                     'default': '0', 'description': "''"},                           {'name': 'accel_fps',                    'default': '0', 'description': "''"},                           {'name': 'enable_gyro',                  'default': 'true', 'description': "''"},                           {'name': 'enable_accel',                 'default': 'true', 'description': "''"},                           {'name': 'enable_pose',                  'default': 'true', 'description': "''"},                           {'name': 'pose_fps',                     'default': '200', 'description': "''"},                           {'name': 'pointcloud.enable',            'default': 'false', 'description': ''}, {'name': 'pointcloud.stream_filter',     'default': '2', 'description': 'texture stream for pointcloud'},{'name': 'pointcloud.stream_index_filter','default': '0', 'description': 'texture stream index for pointcloud'},{'name': 'enable_sync',                  'default': 'true', 'description': "''"},                           {'name': 'align_depth.enable',           'default': 'true', 'description': "''"},                           {'name': 'colorizer.enable',             'default': 'false', 'description': "''"},{'name': 'clip_distance',                'default': '-2.', 'description': "''"},                           {'name': 'linear_accel_cov',             'default': '0.01', 'description': "''"},                           {'name': 'initial_reset',                'default': 'false', 'description': "''"},                           {'name': 'allow_no_texture_points',      'default': 'false', 'description': "''"},                           {'name': 'pointcloud.ordered_pc',        'default': 'false', 'description': ''},{'name': 'tf_publish_rate',              'default': '0.0', 'description': 'Rate of publishing static_tf'},{'name': 'diagnostics_period',           'default': '0.0', 'description': 'Rate of publishing diagnostics. 0=Disabled'},{'name': 'decimation_filter.enable',     'default': 'false', 'description': 'Rate of publishing static_tf'},{'name': 'rosbag_filename',              'default': "''", 'description': 'A realsense bagfile to run from as a device'},{'name': 'depth_module.exposure.1',      'default': '7500', 'description': 'Depth module first exposure value. Used for hdr_merge filter'},{'name': 'depth_module.gain.1',          'default': '16', 'description': 'Depth module first gain value. Used for hdr_merge filter'},{'name': 'depth_module.exposure.2',      'default': '1', 'description': 'Depth module second exposure value. Used for hdr_merge filter'},{'name': 'depth_module.gain.2',          'default': '16', 'description': 'Depth module second gain value. Used for hdr_merge filter'},{'name': 'depth_module.hdr_enabled',     'default': 'false', 'description': 'Depth module hdr enablement flag. Used for hdr_merge filter'},{'name': 'hdr_merge.enable',             'default': 'false', 'description': 'hdr_merge filter enablement flag'},{'name': 'wait_for_device_timeout',      'default': '-1.', 'description': 'Timeout for waiting for device to connect (Seconds)'},{'name': 'reconnect_timeout',            'default': '6.', 'description': 'Timeout(seconds) between consequtive reconnection attempts'},{'name': 'depth_module.emitter_enabled', 'default': 'false', 'description': ''},]
def declare_configurable_parameters(parameters):return [DeclareLaunchArgument(param['name'], default_value=param['default'], description=param['description']) for param in parameters]def set_configurable_parameters(parameters):return dict([(param['name'], LaunchConfiguration(param['name'])) for param in parameters])def yaml_to_dict(path_to_yaml):with open(path_to_yaml, "r") as f:return yaml.load(f, Loader=yaml.SafeLoader)def launch_setup(context, *args, **kwargs):_config_file = LaunchConfiguration("config_file").perform(context)params_from_file = {} if _config_file == "''" else yaml_to_dict(_config_file)log_level = 'info'# Realsenseif (os.getenv('ROS_DISTRO') == "dashing") or (os.getenv('ROS_DISTRO') == "eloquent"):return [launch_ros.actions.Node(package='realsense2_camera',node_namespace=LaunchConfiguration("camera_name"),node_name=LaunchConfiguration("camera_name"),node_executable='realsense2_camera_node',prefix=['stdbuf -o L'],#parameters=[set_configurable_parameters(configurable_parameters)#, params_from_file#],parameters=[{'enable_infra1': True,'enable_infra2': True,'enable_color': False,'enable_depth': False,'depth_module.emitter_enabled': 0,'depth_module.profile': '640x360x90'}],output='screen',arguments=['--ros-args', '--log-level', LaunchConfiguration('log_level')],)]else:return [launch_ros.actions.Node(package='realsense2_camera',namespace=LaunchConfiguration("camera_name"),name=LaunchConfiguration("camera_name"),executable='realsense2_camera_node',parameters=[{'enable_infra1': True,'enable_infra2': True,'enable_color': False,'enable_depth': False,'depth_module.emitter_enabled': 0,'depth_module.profile': '640x360x90'}],output='screen',arguments=['--ros-args', '--log-level', LaunchConfiguration('log_level')],emulate_tty=True,)]def generate_launch_description():return LaunchDescription(declare_configurable_parameters(configurable_parameters) + [OpaqueFunction(function=launch_setup)])

RealSense相机在ros2环境的安装相关推荐

  1. ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下

    ** 1参考链接 ** (1)UR5.realsense手眼标定 (2)优遨机器人UR5与RealSense深度摄像头D435的手眼标定 (3)UR5.realsense手眼标定**** (4)标定所 ...

  2. ubuntu18.04系统ros melodic 安装orbslam2,Astra相机的ROS环境

    ubuntu18.04 安装orbslam2,rosbag,Astra相机的ROS环境  ubuntu20.04系统 ros noetic下安裝orbslam2 打开下面链接: CSDNhttps:/ ...

  3. 奥比中光深度相机ros2 humble版安装分享

    奥比中光深度相机官网只有ros2 galactic安装例子,我测试了一下,在humble也能用,下面介绍一下安装方法. ros2 humble版本安装用小鱼的一键安装,这里不再介绍,下面是一键安装网址 ...

  4. UR5机械臂与realsense相机在Gazebo仿真环境下的手眼标定(眼在手上)

    简介 这是一个Gazebo仿真环境下利用UR5机械臂和realsense相机进行手眼标定的教程(眼在手上). 准备相关文件 # UR5 git clone https://github.com/Uni ...

  5. Realsense相机在linux下的配置使用,RGB与depth图像对齐

    目录 非ROS版本 配置 使用 注意: ROS版本 非ROS版本 配置 要在linux下使用realsense相机,需要首先配置librealsense.我的环境是Ubuntu18.04,相机是D43 ...

  6. ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)上

    Universal Robots(优傲机器人)公司是一家引领协作机器人全新细分市场的先驱企业,该公司成立于2005年,关注机器人的用户可操作性和灵活度,总部位于丹麦的欧登塞市,主要的机器人产品有:UR ...

  7. ROS系统——roslaunch发布4个realsense相机的4种方法

    前提条件: 安装好ROS系统 安装好realsense-ros库 备注:以下方法仅在PC主机上进行了测试,并且自带4个USB3.0接口. 方法1:通过serial_no字段,ROS自动去查找并发布主机 ...

  8. CAMERA(12)---[Android相机]光线传感器识别环境光亮强度

    [Android相机]光线传感器识别环境光亮强度 关于Android相机的开发流程可以看前一篇文章, [Android 相机]Android 相机开发的基本流程 https://blog.csdn.n ...

  9. 事件相机模拟器rpg-esim环境搭建

    事件相机模拟器rpg-esim环境搭建 project page: http://rpg.ifi.uzh.ch/esim.html PDF: http://rpg.ifi.uzh.ch/docs/CO ...

最新文章

  1. 程序员做到这20条,成为人生赢家!
  2. VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计
  3. Codeforces Round #247 (Div. 2)C. k-Tree(动态规划)
  4. VTK:vtkCompositePolyDataMapper2用法实战
  5. MVC把表格导出到Excel
  6. 闪电模型数学_最经典的数学模型
  7. C#弹窗提示并自动关闭方法
  8. 关于php单引号和双引号
  9. ios xcode如何在控制台打印frame
  10. MySQL详细学习教程(建议收藏)
  11. 微软发布了个BT软件
  12. 怎样屏蔽百度搜索侧边栏推荐以及热搜榜广告
  13. Vue响应式实现原理
  14. HR团队如何提升效率?人力资源RPA给你答案
  15. 蓝帽杯2022初赛电子取证
  16. 昆仑通泰(MCGS)官方资料
  17. 新手向SandForce SF2281主控SSD开卡虚拟机详细教程
  18. STM32CubeMX系列|红外遥控
  19. MIT-BIH的影响(译)
  20. 【渝粤教育】电大中专电子商务网站建设与维护 (16)作业 题库

热门文章

  1. Docker实现Canal MySQL增量日志订阅消费环境搭建
  2. 凯泽窗带通滤波器MATLAB,用凯泽窗设计线性相位带通FIR滤波器
  3. VM虚拟机:VMware Kernel Module Updater
  4. PC微信本地图片格式转化
  5. 什么是Nginx?有什么用?
  6. Linux之命令改ip
  7. Java引入第三方包
  8. [附源码]Python计算机毕业设计高校社团管理系统
  9. Linpack测试环境的搭建
  10. java——配置环境变量