典型传感器简介及驱动安装

双目视觉传感器 Indemind
传感器简介
INDEMIND M1 是专为开发者提供的一款硬件,采用“双目摄像头+IMU”多传感器融合架构与
微秒级时间同步机制,为视觉 SLAM 研究提供精准稳定数据源,以满足 SLAM 研究、导航及
避障开发、视觉动作捕捉开发、立体视觉开发等使用需求。
它的几个重要特点列举如下:
两个全局快门相机,灰度图像,输出到 USB 口。
广角相机,水平视野 120 度,垂直视野 75 度。
图像在 1280x800 分辨率下最高达到 100Hz,640x400 分辨率下最高 200Hz,属于高速相机。
IMU 型号为 ICM-20602,性能和 MPU 6050 差不多,最高可以达到 1000Hz,并且与图像硬
同步。
基线为 12cm,和 ZED 双目相机一致,估计深度范围大约在 0.5-20m,可用于室内场景。
SDK 自带深度估计功能,输出深度图像为 640x400,25Hz。
SDK 自带 SLAM 功能,可以读到相机计算的 Pose,25Hz。
驱动安装
安装教程:https://imsee-sdk-docs.readthedocs.io/zh/latest/src/sdk/install_ubuntu.html
# 获取 SDK
sudo apt-get install git
git clone https://github.com/indemind/IMSEE-SDK.git
cd IMSEE-SDK
make init
#安装 opencv
[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config
libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2
libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
libdc1394-22-dev
git clone https://github.com/opencv/opencv.git
cd opencv/
git checkout tags/3.4.3
#注意,此处最好尽量指定 3.4.3 版本,否则后面一些可执行文件会缺少依赖库
mkdir build
cd build/
$ cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \\
-DWITH_CUDA=OFF \\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
..
$ make -j4
$ sudo make install
#MNN 安装,先安装依赖 protobuf
[required] sudo apt-get install autoconf automake libtool
$ git clone https://github.com/google/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
105
cvlife.net$ mkdir build
cd build
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
$ protoc --version # 若安装成功,将显示 protoc 版本
#MNN
$ git clone https://github.com/alibaba/MNN.git
$ cd MNN
$ ./schema/generate.sh
$ mkdir build $$ cd build
$ cmake ..
$ make -j4
$ sudo make install
#编译样例并运行
make demo
./demo/output/bin/get_image
#ros 驱动安装与测试
$ cd <IMSEE-SDK> # <IfMSEE-SDK> 为 SDK 具体路径
$ make ros
$ sudo su #开启权限模式
$ source ros/devel/setup.bash
$ roslaunch imsee_ros_wrapper start.launch
$ sudo su #开启权限模式
$ source ros/devel/setup.bash
$ roslaunch imsee_ros_wrapper display.launch
运行 SLAM:
VINS-Mono:https://blog.csdn.net/qq_43134830/article/details/115006473,内含配置文件,
包含相机内参/IMU 内参/相机与 IMU 之间的外参等信息
ORB-SLAM:https://blog.csdn.net/weixin_45057582/article/details/125890604
RGB-D 视觉传感器 Realsense D455
深度测量原理:本质是双目立体匹配
1. 红外发射器发射不可见的红外图案,可以在弱纹理场景下提高深度测量
的精度
2. 左右目图像传感器接收可见光和不可见光组成的图像
3. 左右目图像逐像素匹配,三角化得到深度值
Datasheet
Intel RealSense 系列相机从 Firmware version 5.10.6.0 开始加入了自标定功能,大大提高了
相机标定的自动化程度
https://dev.intelrealsense.com/docs/intel-realsensetm-d400-series-calibration-tools-user
guide 或者 参考 https://blog.csdn.net/a2824256/article/details/106729403
http://blog.chinaunix.net/uid-27875-id-5846318.html
安装
推荐源码安装,方便修改
注意:
• 官方要求 USB 3.0 接口,USB 2.0 可能会出问题。
• SDK 不太支持虚拟机。如果必须要用虚拟机,选择 VMware
Workstation,把虚拟机 USB 接口设置成 3.1(虚拟机设置 -> 硬件 ->
USB 控制器 -> 连接 -> USB 兼容性 -> USB 3 ),不然连接不上相
机。
• 安装过程中(比如指令 wget, git, add-apt-repository)可能遇到路
由设置、防火墙的影响导致连接超时等类型的安装失败。建议科学上
网。
• 推荐在 Ubuntu 18.04 系统下安装。年少不知 18 好,错把 20 当做宝。
• 先不要连接相机到电脑。先安装 SDK,安装好后再插入相机。
1、预备工作
更新 Ubuntu 系统内核
# 更新 Ubuntu 系统内核
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist
upgrade
安装依赖库,解释下依赖库的意思
libusb 是一个 USB 设备访问接口库;
gtk 是一个图形工具包;
glfw 是一个 OpenGL 应用框架;
# 安装 USB 相关依赖库
sudo apt-get install git libssl-dev libusb-1.0-0-dev libudev-dev pkg
config libgtk-3-dev
# 安装 OpenGL 用到的相关依赖项
# Ubuntu 16 系统下运行
# sudo apt-get install libglfw3-dev
# Ubuntu 18/20 系统下运行
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
检查 CMAKE 版本。有些 librealsense 里 CMAKE 标志位(比如 CUDA)要求 3.8+以上版本,
Ubuntu apt 方 式 安 装 的 cmake 版 本 可 能 比 较 老 , 这 种 情 况 下 去 cmake 官 网
(https://cmake.org/download/)下载最新的版本安装。
# 查看 cmake 版本号
cmake --version
2、下载官方 SDK librealsense
可以使用如下 git 命令下载
git clone https://github.com/IntelRealSense/librealsense.git
如 果 网 速 慢 , 也 可 以 直 接 在
GitHub
上 下 载 压 缩 包
https://github.com/IntelRealSense/librealsense/archive/master.zip
3、设置 Intel Realsense 设备的许可。
# 在 librealsense 文件夹下运行
109
cvlife.net./scripts/setup_udev_rules.sh
# 如果要取消许可,运行
# ./scripts/setup_udev_rules.sh --uninstall
创建应用内核模块的补丁。执行该脚本将下载、修补和构建受 realsense 影响的内核模块(驱
动程序)。然后,它将尝试插入修补过的模块。如果失败将恢复原始 uvc 模块。
./scripts/patch-realsense-ubuntu-lts.sh
4、安装 SDK
mkdir build && cd build
# DCMAKE_BUILD_TYPE=Release 加上的话编译会快,不加默认 Debug 编译(生
成单元测试文件)
# -DBUILD_GRAPHICAL_EXAMPLES=false 加上的话不编译 OpenGL 和 X11,只有
文本示例
cmake ../ -DBUILD_EXAMPLES=true # 编译 demo 和教程
make -j4 # 4 核同时编译,可以加快编译速度。如果低端平台可能会挂
sudo make install
安装完后,共享库目录:/usr/local/lib 头文件目录 /usr/local/include
5、测试安装成功
连接相机至电脑 USB3.0 接口,注意:连接相机的数据线必须是 USB3.0 的数据线(USB 口内
为蓝色)
# 打开终端输入
realsense-viewer
示例代码
1、直接显示捕获的彩色图,深度图、IMU 信息
# 示例代码:直接显示捕获的彩色图,深度图、IMU 信息
# 在 librealsense/build 路径下执行
examples/capture/rs-capture
暂时无法在飞书文档外展示此内容
2、显示点云
# 示例代码:点云
# 在 librealsense/build 路径下执行
examples/pointcloud/rs-pointcloud
暂时无法在飞书文档外展示此内容
3、彩色图和深度图对齐
运行方法
# 示例代码:对齐
# 在 librealsense/build 路径下执行
examples/align/rs-align
代码框架
#include <librealsense2/rs.hpp>
#include "example-imgui.hpp"
// 定义投影方向
enum class direction
{to_depth,to_color
};
// Forward definition of UI rendering, implemented below
void render_slider(rect location, float* alpha, direction* dir);
int main(int argc, char * argv[]) try
112 cvlife.net
{std::string serial;if (!device_with_streams({ RS2_STREAM_COLOR,RS2_STREAM_DEPTH }, 
serial))return EXIT_SUCCESS;// Create and initialize GUI related objectswindow app(1280, 720, "RealSense Align Example"); // Simple 
window handlingImGui_ImplGlfw_Init(app, false); // ImGui library 
intializitionrs2::colorizer c; // Helper to colorize depth 
imagestexture depth_image, color_image; // Helpers for renderig 
images// Create a pipeline to easily configure and start the camerars2::pipeline pipe;rs2::config cfg;if (!serial.empty())cfg.enable_device(serial);cfg.enable_stream(RS2_STREAM_DEPTH);cfg.enable_stream(RS2_STREAM_COLOR);pipe.start(cfg);// 定义两种投影方向rs2::align align_to_depth(RS2_STREAM_DEPTH);rs2::align align_to_color(RS2_STREAM_COLOR);// 透明度系数float alpha = 0.5f; // Transparancy 
coefficient// 默认从彩色图投影到深度图direction dir = direction::to_depth; // Alignment directionwhile (app) // Application still alive?{// Using the align object, we block the application until a 
frameset is availablers2::frameset frameset = pipe.wait_for_frames();if (dir == direction::to_depth){// Align all frames to depth viewport
113 cvlife.netframeset = align_to_depth.process(frameset);}else{// Align all frames to color viewportframeset = align_to_color.process(frameset);}// With the aligned frameset we proceed as usualauto depth = frameset.get_depth_frame();auto color = frameset.get_color_frame();auto colorized_depth = c.colorize(depth);glEnable(GL_BLEND);// Use the Alpha channel for blendingglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);if (dir == direction::to_depth){// When aligning to depth, first render depth image// and then overlay color on top with transparancydepth_image.render(colorized_depth, { 0, 0, app.width(), 
app.height() });color_image.render(color, { 0, 0, app.width(), 
app.height() }, alpha);}else{// When aligning to color, first render color image// and then overlay depth image on topcolor_image.render(color, { 0, 0, app.width(), 
app.height() });depth_image.render(colorized_depth, { 0, 0, app.width(), 
app.height() }, 1 - alpha);}glColor4f(1.f, 1.f, 1.f, 1.f);glDisable(GL_BLEND);// Render the UI:ImGui_ImplGlfw_NewFrame(1);render_slider({ 15.f, app.height() - 60, app.width() - 30, 
app.height() }, &alpha, &dir);ImGui::Render();
114 cvlife.net}return EXIT_SUCCESS;
参考:
RealSense D455 的标定并运行 VINS-FUSION_Z_Jin16 的博客-CSDN 博客_d455 标定
Intel RealSense D435i:简介、安装与使用(ROS、Python)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++基础编程100题-014 OpenJudge-1.3-12 计算球的体积

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/12/ 描述 对于半径为r的球&#xff0c;其体积的计算公式为$ V4/3*πr^3 $&#xff0c;这里取π 3.14。 现给定r&#xff0c;求V。 输入 输入为一个不超过100的非负实数&#xff0c;即球半径&#xff0…

C# 高频面试题

C# 初级面试题及详细解答 1. C#中的值类型和引用类型的区别是什么&#xff1f; 解答: 值类型存储在堆栈上&#xff0c;直接包含数据&#xff1b;引用类型存储在堆上&#xff0c;存储的是对象的引用。值类型包括基本类型如 int、float 和 struct&#xff1b;引用类型包括 clas…

Perl编程探索:深入理解数组变量

Perl语言以其在文本处理和系统管理任务中的强大能力而受到广泛欢迎。在Perl中&#xff0c;数组是处理多个值集合的一种关键数据结构。本文将深入探讨Perl中的数组变量&#xff0c;包括它们的声明、初始化、访问和操作。 Perl数组的基本概念 在Perl中&#xff0c;数组可以用来…

FL Studio 21 集成了音频剪辑和增益控制,你可以更快、更精确地控制音频电平,包括自动交叉淡入淡出及更多功能

以通过控制色调、饱和度、亮度、文本、仪表和步进序列器的颜色来改变你的DAW外观&#xff0c; DAW“情绪主题”控制&#xff0c;水果编曲将变得与众不同。 更快的音频编辑 FL Studio 21 集成了音频剪辑包络和增益控制&#xff0c;你可以更快、更精确地控制音频电平&#xff0c…

代码随想录算法训练营第十四天| 110.平衡二叉树 | 257. 二叉树的所有路径 | 404.左叶子之和 | 222.完全二叉树的节点个数

110.平衡二叉树 &#xff08;优先掌握递归&#xff09; 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;后序遍历求高度&#xff0c;高度判断是否平衡 | LeetCode&#xff1a;110.平衡二叉树_哔哩哔哩_bilibili 1. 不知道咋做。 2. 在求二叉树的高度的代码上改&#xff…

学习面向对象前--Java基础练习题

前言 写给所有一起努力学习Java的朋友们&#xff0c;敲代码本身其实是我们梳理逻辑的一个过程。我们在学习Java代码的过程中&#xff0c;除了需要学习Java的一些基本操作及使用&#xff0c;更重要的是我们需要培养好的逻辑思维。逻辑梳理好之后&#xff0c;我们编写代码实现需要…

aws的alb,多个域名绑定多个网站实践

例如首次创建的alb负载均衡只有www.xxx.com 需要添加 负载 test2.xxx.com aws的Route 53产品解析到负载均衡 www.xxx.com 添加CNAME&#xff0c;到负载均衡的dns字段axx test2.xxx.com 添加CNAME&#xff0c;到负载均衡的dns字段axx 主要介绍目标组和规则 创建alb就不介…

windows系统命令设置ipv4参数(手动、自动)、设置DNS解析、命令设置计算机主机名

命令设置ipv4网络参数。 命令提示符中使用netsh命令为网络接口&#xff08;网络连接&#xff09;配置ipv4参数。命令格式如下&#xff1a; netsh interface ip set address "接口名称" static ip地址 子网掩码 [默认网关] 案例&#xff1a; 将本地 "以太网…

Spring底层原理之FactoryBean Bean工厂 单例对象 多例对象

FactoryBean 在 Spring Framework 中&#xff0c;FactoryBean 是一个用于创建其他 Bean 实例的特殊工厂 Bean。它允许开发者自定义 Bean 的创建逻辑&#xff0c;从而更加灵活地管理和配置 Bean 的实例化过程。 FactoryBean 接口 FactoryBean 接口是 Spring 框架中的一个重要…

推送电子邮箱与其他营销手段如何有效结合?

推送电子邮箱的效果如何&#xff1f;怎么优化邮件推送的策略&#xff1f; 将推送电子邮箱与其他营销手段有效结合&#xff0c;可以显著提升营销效果和用户体验。AokSend将探讨如何将推送电子邮箱与社交媒体营销、内容营销、搜索引擎优化&#xff08;SEO&#xff09;等手段相结…

ubuntu22.04安装AFLGo

git clone gitgithub.com:aflgo/aflgo.git cd aflgo export AFLGO$PWD sudo ./build.sh然后 上面的是官方流程 主要看下面 把build.sh里三个wget的先下好&#xff0c;放在对应路径&#xff0c;然后把他的注释掉&#xff0c;不然下载时间很长很长。然后下python那边容易报错&a…

ArkTS自定义组件

一、自定义组件基本结构 // 定义自定义组件 ButtonCom.ets Component export struct BtnCom{State msg: string "按钮";build() {Row(){Text(this.msg).onClick(() > {this.msg "测试"})}} } // 引入自定义组件 import {BtnCom} from "./Butto…

动物常见图像的图像分类数据集

常见动物图像分类数据集 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1zZnCUZuNlX6MjuZImlDjTw?pwd03b9 提取码&#xff1a;03b9 数据集信息介绍&#xff1a; 文件夹 大象 中的图片数量: 1446 文件夹 松鼠 中的图片数量: 1862 文件夹 河马 中的图片数量:…

理解和处理不同类型的上下文的新型的语言模型ReALM

在人类的日常交流中&#xff0c;模糊的代词如“他们”或“那个”常常出现&#xff0c;它们的意义通常依赖于上下文才能明确。这种上下文的理解对于对话助手来说至关重要&#xff0c;因为它们旨在提供一种自然的交流体验。然而&#xff0c;现有的对话助手在处理这类模糊引用时往…

SAP查看接口日志

大部分SAP项目都会与其他外围系统进行集成&#xff0c;那么日常工作中&#xff0c;如果遇到接口传输问题&#xff0c;我们应该怎样查询呢&#xff1f; 也许这篇文章可以稍微解答一些基础的内容。 1、事务代码SXI_MONITOR检查接口日志&#xff1a; 执行的起止日期默认带出&…

oracle11g rac静默dbca创建实例反复报监听问题

问题 处理方法 手动创建监听程序 重新静默dbca建库

【Linux】性能分析器 gperftools 详解

1、安装 1.1 源码安装 1)源码下载 最新版本:https://github.com/gperftools/gperftools 稳定版本:https://github.com/gperftools/gperftools/releases 2)编译 ./configure make -j83)安装,默认安装在/usr/local/lib目录下 sudo make install1.2 命令安装 以Ubuntu…

LearnOpenGL - Android OpenGL ES 3.0 YUV 渲染

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

Hume AI 将无比强大的情感AI聊天机器人带到了iPhone平台免费使用

总部位于美国的Hume AI研究实验室&#xff0c;致力于开发“针对人类福祉进行优化”的系统&#xff0c;最近推出了其EVI平台的iOS应用版本——名为Hume&#xff1a;您的个人人工智能。 这款新产品包括名为Kora的新型AI语音&#xff0c;以及对热门新Claude 3.5 Sonnet LLM的支持…

第9章:软件可靠性基础知识

随着软件复杂度的增加&#xff0c;软件设计的正确性验证成本也越来越高。可靠和可信的计算模型首先在军事和高要求的商业系统中开始研究&#xff0c;可靠性和其他质量属性一样是衡量软件架构的重要指标。实践证明&#xff0c;保障软件可靠性最有效、最经济、最重要的手段是在软…