当前位置: 首页 > news >正文

MaixSense-A010 接入 ROS

MaixSense 是什么

MaixSense 系列产品搭载 TOF 深度摄像头,目前有 MaixSense-A010 和 MaixSense-A075V 两款产品。

MS-A010 是一款由 BL702 + 炬佑 100x100 TOF 模组所组成的极致性价比的 TOF 3D 传感器模组,最大支持 100x100 的分辨率和 8 位精度,并且带有 240×135 的 LCD 显示屏可实时预览 color map 后的深度图。

而 MS-A075V 是一款具有 RGB 功能的 3D TOF 摄像机模组,该模组可以实现 Linux 免驱的即插即用,实现实时彩色 3D 显示。
参数如下:
在这里插入图片描述

MaixSense 能做什么

远中近物体实拍

高精度的映射物品摆放距离的差异,点云图可直观感受到更真实的可视化。
在这里插入图片描述
在这里插入图片描述

人流统计

可实时监控人流,进行高精度、大分辨率的统计。
在这里插入图片描述
在这里插入图片描述

小车避障

可搭载于小车移动并判断画面是否有障碍物,模组自带 LCD 屏幕精准显示距离并做出反应规避障碍物。

在这里插入图片描述

键盘灯跟随

实现超酷炫的键盘灯跟随,实时跟踪手部的位置,再根据手部的位置映射键盘灯。
在这里插入图片描述

体积测量

在这里插入图片描述

外接 MCU

MS-A010 拥有强大的兼容性,基于串口协议的数据传输。
可外接 K210 bit 这样的单片机开发板或树莓派之类的 linux 开发板来进行二次开发。
在这里插入图片描述

接入 ROS1 / ROS2

双支持 ROS 系统,开放 ROS1+ROS2 接入功能包,可快速获得深度数据及深度图。
在这里插入图片描述
在这里插入图片描述

TOF 技术

TOF: 是一种距离测量的方法,通过测量发射器和反射器之间的超声波/微波/光等信号的“飞行时间”来计算两者之间的距离。 可以实现TOF测距的是TOF传感器。 最常用的是红外线或激光测距。

物体之间的距离存在差异。 该模块通过捕获的深度值的差异来显示冷色和暖色。冷暖色随着距离的映射而变化,距离越近色调呈暖调(橘红)而越远色调呈冷调(蓝色)。
在这里插入图片描述
在这里插入图片描述
更多详细资料不再赘述,见:https://wiki.sipeed.com/hardware/zh/maixsense/maixsense-a010/maixsense-a010.html

接入 ROS1(Linux)

publisher 代码(使用 type-C 虚拟串口)

代码(网上下载)

不要下载网站上的那个接入包,实测不好用。用下面这个:

git clone https://github.com/sipeed/MaixSense_ROS.git

然后我把目录下的 ros1 挪到了自己常用的工作空间,目录结构如下。(视个人情况而定)
在这里插入图片描述

cd ~/mynewestros
catkin_make

运行 publisher

rosrun sipeed_tof_ms_a010 node device:="/dev/ttyUSB0"

效果类似于如下:(当时是使用了不好用的旧接入包,所以只看输出的四个参数即可)
在这里插入图片描述

rqt 查看帧率

Plugins —> Topics —> Message Publisher
在这里插入图片描述
然后运行节点:

rosrun sipeed_tof_ms_a010 node device:="/dev/ttyUSB0"

效果如下:
在这里插入图片描述

rviz 预览

rosrun sipeed_tof_ms_a010 node device:="/dev/ttyUSB0"
rviz

在这里插入图片描述
代码里 header.frame_id 是什么,Global Options - Fixed Frame 就填什么。
在这里插入图片描述
在这里插入图片描述

subscriber 代码(使用 type-C 虚拟串口)

运行 subscriber

rosrun sipeed_tof_ms_a010 msghandler device:="/dev/ttyUSB0"

代码(自行编写)

#include <ros/ros.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/PointCloud2.h>
#include <iostream>void pointDepthCallback(const sensor_msgs::ImageConstPtr& msg)
{// 打印点云中的点数// ROS_INFO("Received point cloud with %d points", msg->width * msg->height);
}void pointCloudCallback(const sensor_msgs::PointCloud2ConstPtr& msg)
{// 打印点云中的点数ROS_INFO("Received point cloud with %d points", msg->width * msg->height);
}int main (int argc, char **argv)
{// 初始化ROS节点ros::init(argc, argv, "point_cloud_processor");// 创建节点句柄ros::NodeHandle nh("~");std::string s;nh.param<std::string>("device", s, "/dev/ttyUSB0");std::cout << "use device: " << s << std::endl;std::string from_device(s.substr(5));std::stringstream sd;std::stringstream sc;// 订阅深度信息sd.str("");sd << "/" << from_device << "/depth";std::cout << sd.str() << std::endl;ros::Subscriber sub_depth = nh.subscribe<sensor_msgs::Image>(strdup(sd.str().c_str()), 1, pointDepthCallback);std::cout << strdup(sd.str().c_str()) << std::endl;// 订阅点云数据sc.str("");sc << "/" << from_device << "/cloud";std::cout << sc.str() << std::endl;ros::Subscriber sub_cloud = nh.subscribe<sensor_msgs::PointCloud2>(strdup(sc.str().c_str()), 1, pointCloudCallback);std::cout << strdup(sc.str().c_str()) << std::endl;// 循环处理ROS消息ros::spin();return 0;
}

这里有个小坑,明天再说吧,早该下班了~
看一下实现效果吧:
在这里插入图片描述

注意!!

在运行节点时,所填的参数不一定是“/dev/ttyUSB0”,可能是“/dev/ttyUSB1”、/dev/ttyUSB2“”、“/dev/ttyUSB3”……
所以要提前查看一下有效的 USB 口。

ls /dev/ttyUSB
# 然后狂摁Tab

相关文章:

MaixSense-A010 接入 ROS

MaixSense 是什么 MaixSense 系列产品搭载 TOF 深度摄像头&#xff0c;目前有 MaixSense-A010 和 MaixSense-A075V 两款产品。 MS-A010 是一款由 BL702 炬佑 100x100 TOF 模组所组成的极致性价比的 TOF 3D 传感器模组&#xff0c;最大支持 100x100 的分辨率和 8 位精度&…...

使用WordPress在US Domain Center上建立招聘网站的详细教程

第一部分&#xff1a;介绍招聘网站 招聘网站是指用于发布招聘信息、吸引求职者、进行简历筛选和管理招聘流程的网站。在WordPress中&#xff0c;您可以轻松地创建一个功能齐全的招聘网站&#xff0c;以便企业能够方便地管理招聘流程&#xff0c;并为求职者提供信息和应聘渠道。…...

C++:类和对象(上篇)

目录&#xff1a; 一&#xff1a;面向对象和过程的介绍 二&#xff1a;类的引入 三&#xff1a;类的定义 四&#xff1a;类的访问限定符以及封装 五&#xff1a;类的作用域 六&#xff1a;类的实例化 七&#xff1a;类对象大小的计算 八&#xff1a;类成员函数的this指…...

氧化铝电容的工艺结构原理及选型参数总结

🏡《总目录》 目录 1,概述2,工作原理3,结构特点4,工艺流程4.1,材料准备4.2,氧化处理4.3,薄膜处理4.4,电极制作4.5,封装4.6,测试与筛选5,选型参数5.1,电容量(Capacitance)...

野火ESP8266模块开发-基于Arduino IDE

一、野火ESP8266模块介绍 ESP8266 拥有高性能无线 SOC&#xff0c;给移动平台设计师带来福音&#xff0c;它以最低成本提供最大实用性&#xff0c;为 WiFi 功能嵌入其他系统提供无限可能。ESP8266 是一个完整且自成体系的 WiFi 网络解决方案&#xff0c;能够独立运行&#xff0…...

[Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮

1、功能介绍 在项目UI中使用较多的打开/关闭的开关按钮&#xff0c;一般都是找图片去做效果&#xff0c;比如说如下的图像来表征打开或关闭。 如果想要控件有打开/关闭的动画效果或比较好的视觉效果&#xff0c;这里就可以使用自定义控件&#xff0c;使用Painter来绘制控件。软…...

【工具】mac 环境配置

【待补充 】 一、maven配置 vim ~/.bash_profile export M3_HOME/Users/chenyang/java_utils/apache-maven-3.6.1 export PATH$PATH:$M3_HOME/bin ​ //mvn -v提示Permission denied 没有权限访问 chmod ax /Users/chenyang/java_utils/apache-maven-3.6.1/bin/mvn 二、java…...

【前端寻宝之路】学习和总结HTML的标签属性

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…...

kafka2.x版本配置SSL进行加密和身份验证

背景&#xff1a;找了一圈资料&#xff0c;都是东讲讲西讲讲&#xff0c;最后我还没搞好&#xff0c;最终决定参考官网说明。 官网指导手册地址&#xff1a;Apache Kafka 需要预备的知识&#xff0c;keytool和openssl 关于keytool的参考&#xff1a;keytool的使用-CSDN博客 …...

Linux和Windows下的文件批量重命名

一、Linux下文件批量重命名 rename命令说明&#xff1a; Usage: rename [options] … Rename files. Options: -v, --verbose explain what is being done -s, --symlink act on the target of symlinks -n, --no-act do not make any changes -o, --no-overwrite don’t overw…...

stm32之GPIO电路介绍

文章目录 1 GPIO介绍2 GPIO的工作模式2.1 浮空输入2.2 上拉输入2.3 下拉输入2.4 模拟输入2.5 开漏输出2.6 推挽输出2.7 复用开漏输出2.8 复用推挽输出2.9 其他 3 应用方式4 常用库函数 1 GPIO介绍 保护二极管&#xff1a;保护引脚&#xff0c;让引脚的电压位于正常的范围施密特…...

Unity Toggle处理状态变化事件

Toggle处理状态变化事件&#xff0c;有两个方法。 法一、通过Inspector面板设置 实现步骤&#xff1a; 在Inspector面板中找到Toggle组件的"On Value Changed"事件。单击""按钮添加一个新的监听器。拖动一个目标对象到"None (Object)"字段&am…...

UE5.1 iClone8 正确导入角色骨骼与动作

使用iClone8插件Auto Setup 附录下载链接 里面有两个文件夹,使用Auto Setup C:\Program Files\Reallusion\Shared Plugins 在UE内新建Plugins,把插件复制进去 在工具栏出现这三个人物的图标就安装成功了 iClone选择角色,导入动作 选择导出FBX UE内直接导入 会出现是否启动插件…...

FFmpeg-- c++实现:pcm和yuv编码

文章目录 流程音频视频 api核心代码audioencoder.haudioencoder.cppvideoencoder.hvideoencoder.cpp pcm和yuv编码为aac和h264&#xff0c;封装为c的AudioEncoder类和VideoEncoder类 流程 音频 初始化音频参数 int InitAAC(int channels, int sample_rate, int bit_rate); 音…...

图解CodeWhisperer的安装使用

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; CodeWhisperer简介 &#…...

Python内置对象

Python是一种强大的、动态类型的高级编程语言&#xff0c;其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等&#xff0c;每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…...

开源数据集 nuScenes 之 3D Occupancy Prediction

数据总体结构 Nuscenes 数据结构 可以看一下我的blog如何下载完整版 mmdetection3d ├── mmdet3d ├── tools ├── configs ├── data │ ├── nuscenes │ │ ├── maps │ │ ├── samples │ │ ├── sweeps │ │ ├── lidarseg (o…...

物联网竞赛板CubMx全部功能简洁配置汇总

目录 前言&#xff1a;1、按键&LED灯配置&#xff1a;2、OLED配置&#xff1a;3、继电器配置&#xff1a;4、LORA模块配置&#xff1a;5、矩阵模块&#xff1a;6、串口模块&#xff1a;7、RTC配置&#xff1a;8、ADC模块配置&#xff1a;9、温度传感器模块&#xff1a;后续…...

使用Redis做缓存的小案例

如果不了解Redis&#xff0c;可以查看本人博客&#xff1a;Redis入门 Redis基于内存&#xff0c;因此查询速度快&#xff0c;常常可以用来作为缓存使用&#xff0c;缓存就是我们在内存中开辟一段区域来存储我们查询比较频繁的数据&#xff0c;这样&#xff0c;我们在下一次查询…...

剧本杀小程序功能介绍

剧本杀功能介绍 剧本杀&#xff0c;一种融合了角色扮演与推理解谜的社交游戏&#xff0c;近年来在年轻人中越来越受欢迎。它不仅可以锻炼参与者的逻辑推理能力&#xff0c;还能增进朋友间的感情&#xff0c;提升团队协作能力。下面&#xff0c;我们将详细介绍剧本杀的核心功能…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...