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

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录

/mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch

<launch><!-- Input arguments --><arg name="device" value="1443" doc="TI mmWave sensor device type [1443, 1642]"/><arg name="config" value="3d" doc="TI mmWave sensor device configuration [3d_best_range_res (not supported by 1642 EVM), 2d_best_range_res]"/><arg name="max_allowed_elevation_angle_deg" default="90" doc="Maximum allowed elevation angle in degrees for detected object data [0 > value >= 90]}"/><arg name="max_allowed_azimuth_angle_deg" default="90" doc="Maximum allowed azimuth angle in degrees for detected object data [0 > value >= 90]}"/><!-- mmWave_Manager node --><node pkg="ti_mmwave_rospkg" type="ti_mmwave_rospkg" name="ti_mmwave" ns="radar_0" output="screen"><param name="command_port" value="/dev/ttyACM0"  /><param name="command_rate" value="115200"   /><param name="data_port" value="/dev/ttyACM1"  /><param name="data_rate" value="921600"   /><param name="max_allowed_elevation_angle_deg" value="$(arg max_allowed_elevation_angle_deg)"   /><param name="max_allowed_azimuth_angle_deg" value="$(arg max_allowed_azimuth_angle_deg)"   /><param name="frame_id" value="/ti_mmwave_0"/><param name="mmWaveCLI_name" value="/mmWaveCLI" /><remap from="/ti_mmwave/radar_scan_pcl" to="/ti_mmwave/radar_scan_pcl_0"/></node><!-- mmWaveQuickConfig node (terminates after configuring mmWave sensor) --><node pkg="ti_mmwave_rospkg" type="mmWaveQuickConfig" name="ti_mmwave_config" ns="radar_0" args="$(find ti_mmwave_rospkg)/cfg/1443_3d.cfg" output="screen" ><param name="mmWaveCLI_name" value="/mmWaveCLI" /></node><node pkg="tf" type="static_transform_publisher" name="base_to_radar" args="0 0 0 0 0 0 base_footprint ti_mmwave_0 100"/><!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find ti_mmwave_rospkg)/launch/rviz/ti_mmwave_multi.rviz"/> -->
</launch>

点云输出话题:/ti_mmwave/radar_scan_pcl_0

/mmwave_ti_ros/robotics_ros/src/turtlebot_mmwave_launchers/launch/single_sensor/radar_limit_filters.launch

<!--Filters for the data from the radar-->
<launch><node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen"/><!-- x_filt 节点:这是一个名为 x_filt 的节点,用于加载一个点云滤波器,具体是 pcl/PassThrough。这个滤波器将用于过滤雷达数据中的 x 坐标。通过 <remap> 标签,将输入和输出话题进行重映射,以将数据传递给下一个滤波器。通过 <rosparam> 标签,设置了滤波器的参数,包括 filter_field_name(要过滤的字段名)、filter_limit_min(最小允许值)、filter_limit_max(最大允许值)、filter_limit_negative(是否允许负值)--><node pkg="nodelet" type="nodelet" name="x_filt" args="load pcl/PassThrough pcl_manager" output="screen"><!-- 将毫米波点云输入过滤器 --><remap from="~input" to="ti_mmwave/radar_scan_pcl_0" /><remap from="~output" to="x_filt_out" /><rosparam>filter_field_name: xfilter_limit_min: 0.1filter_limit_max: 4filter_limit_negative: False</rosparam></node><node pkg="nodelet" type="nodelet" name="y_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="x_filt_out" /><remap from="~output" to="xy_filt_out" /><rosparam>filter_field_name: yfilter_limit_min: -3filter_limit_max: 3filter_limit_negative: False</rosparam></node><node pkg="nodelet" type="nodelet" name="z_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="xy_filt_out" /><remap from="~output" to="xyz_filt_out" /><rosparam>filter_field_name: zfilter_limit_min: -0.4filter_limit_max: 0.10filter_limit_negative: False</rosparam></node><!-- 过滤强度 --><node pkg="nodelet" type="nodelet" name="i_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="xyz_filt_out" /><remap from="~output" to="xyzi_filt_out" /><rosparam>filter_field_name: intensityfilter_limit_min: 8filter_limit_max: 100filter_limit_negative: False</rosparam></node></launch>

点云输出话题:/xyzi_filt_out、/xyz_filt_out、/xy_filt_out、/x_filt_out

/mmwave_ti_ros/robotics_ros/src/turtlebot_mmwave_launchers/launch/single_sensor/radar_mapping.launch

<!--Launch file to perform mapping using octomap with the radar--><!-- 
运行 ROS 中的 octomap_server 软件包。
其中有几个过滤器可供使用: 用于所有点云字段的通过过滤器,以及用于过滤原始地图的统计离群点去除过滤器。
通过式过滤器:去除特定字段(X、Y、Z、强度)中超出一定范围的值
统计离群点去除:根据与其近邻的距离去除数值
这些过滤器的参数/限制可在 turtlebot_mmwave_launchers/launch/radar_limit_filters.launch 文件中找到并修改。
更改 radar_limit_filters.launch 文件后,必须重新启动 radar_mapping.launch 文件,以使新参数生效。 
--><launch><!-- Publish static transform from map to odom for mapping using only odometry info --><node pkg="tf" type="static_transform_publisher" name="static_tf_map_to_odom" args="0 0 0 0 0 0 map odom 100"/><!-- Add nodes to filter/limit Radar data before using it for mapping --><!-- nodelet --><include file="$(find turtlebot_mmwave_launchers)/launch/single_sensor/radar_limit_filters.launch"></include><!-- Create "raw" 3D map using first octomap node --><node pkg="octomap_server" type="octomap_server_node" name="octomap_raw" output="screen" ><remap from="octomap_point_cloud_centers" to="raw_point_cloud_centers" /><remap from="projected_map" to="raw_map" /><param name="frame_id" type="string" value="/ti_mmwave_0" /><remap from="cloud_in" to="xyzi_filt_out" /></node><!-- Perform SOR filtering on output from "raw" octomap node --><node pkg="nodelet" type="nodelet" name="mapping_SOR_filt_mapping" args="standalone pcl/StatisticalOutlierRemoval" output="screen" ><remap from="~input" to="raw_point_cloud_centers" /><remap from="~output" to="mapping_SOR_filter_out" /><param name="mean_k" value="20" /><param name="stddev" value="0.04" /></node><!-- Create "filtered" 3D map using second octomap node --><node pkg="octomap_server" type="octomap_server_node" name="octomap_filtered" output="screen" ><remap from="octomap_point_cloud_centers" to="filtered_point_cloud_centers" /><remap from="projected_map" to="filtered_map" /><remap from="cloud_in" to="mapping_SOR_filter_out" /></node></launch>

建图:

roslaunch ti_mmwave_rospkg 1443_multi_3d_0.launch
roslaunch turtelbot_mmwave_launchers radar_mapping.launch
rostopic list

请添加图片描述

rqt_graph

请添加图片描述

rosrun rqt_tf_tree rqt_tf_tree

请添加图片描述

相关文章:

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录 /mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch <launch><!-- Input arguments --><arg name"device" value"1443" doc"TI mmWave sensor device type [1443, 1642]"/><arg…...

113双周赛

题目列表 2855. 使数组成为递增数组的最少右移次数 2856. 删除数对后的最小数组长度 2857. 统计距离为 k 的点对 2858. 可以到达每一个节点的最少边反转次数 一、使数组成为递增数组的最少右移次数 这题可以直接暴力求解&#xff0c;枚举出每种右移后的数组&#xff0c;将…...

React 全栈体系(九)

第五章 React 路由 一、相关理解 1. SPA 的理解 单页 Web 应用&#xff08;single page web application&#xff0c;SPA&#xff09;。整个应用只有一个完整的页面。点击页面中的链接不会刷新页面&#xff0c;只会做页面的局部更新。数据都需要通过 ajax 请求获取, 并在前端…...

阈值化分割,对灰度级图像进行二值化处理(数字图像处理大题复习 P8)

文章目录 画出表格求出灰度直方图 & 山谷画出结果图 画出表格 有几个0就写几&#xff0c;有几个1就写几&#xff0c;如图 求出灰度直方图 & 山谷 跟前面求灰度直方图的方法一样&#xff0c;找出谷底&#xff0c;发现结果为 4 画出结果图 最终的结果就是&#xf…...

vue3中withDefaults是什么

问: const props withDefaults(defineProps<{// 数据列表lotteryList: { pic: string; name?: string }[];// 中奖idwinId: number;// 抽奖初始转动速度initSpeed: number;// 抽奖最快转动速度fastSpeed: number;// 抽奖最慢转动速度slowSpeed: number;// 基本圈数baseCi…...

Android进阶之路 - 盈利、亏损金额格式化

在金融类型的app中&#xff0c;关于金额、数字都相对敏感和常见一些&#xff0c;在此仅记录我在金融行业期间学到的皮毛&#xff0c;如后续遇到新的场景也会加入该篇 该篇大多采用 Kotlin 扩展函数的方式进行记录&#xff0c;尽可能熟悉 Kotlin 基础知识 兄弟 Blog StringUti…...

工业蒸汽量预测(速通一)

工业蒸汽量预测&#xff08;一&#xff09; 赛题理解1、评估指标2、赛题模型3、解题思路 理论知识1、变量识别2、变量分析3、缺失值处理4、异常值处理5、变量转换6、新变量生成 数据探索1、导包2、读取数据3、查看数据4、可视化数据分布4.1箱型图4.2获取异常数据并画图4.3直方图…...

机器学习的主要内容

分类任务 回归任务 有一些算法只能解决回归问题有一些算法只能解决分类问题有一些算法的思路既能解决回归问题&#xff0c;又能解决分类问题 一些情况下&#xff0c; 回归任务可以转化为分类任务&#xff0c; 比如我们预测学生的成绩&#xff0c;然后根据学生的成绩划分为A类、…...

华为OD机试真题-分积木-2023年OD统一考试(B卷)

题目描述: Solo和koko是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量。现在他们想要将这些积木分成两堆。哥哥Solo负责分配,弟弟koko要求两个人获得的积木总重量“相等”(根据Koko的逻辑),个数可以不同,不然就会哭,但koko只会先将两个数转成二进制再进行加…...

SpringBoot自动装配原理及分析

一、什么是自动装配 在使用SpringBoot的时候&#xff0c;会自动将Bean装配到IoC容器中。例如我们在使用Redis数据库的时候&#xff0c;会引入依赖spring-boot-starter-data-redis。在引入这个依赖后&#xff0c;服务初始化的时候&#xff0c;会将操作Redis需要的组件注入到IoC…...

Android开发笔记 :理解Fragment

Android开发笔记&#xff1a;理解Fragment 导言 本篇文章产生的原因很简单&#xff0c;就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为ReportFragment的Fragment来跟踪的&#xff0c;为了更好的了解Fragment是如何追踪Activ…...

std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳

当前时间戳获取方法 先使用std::chrono获取当前系统时间&#xff0c;然后将当前系统时间转换为纪元时间std::time_t类型&#xff0c;之后使用std::localtime对std::time_t类型转换为本地时间结构体std::tm类型&#xff0c;最后使用strftime对时间进行格式化输出。 其中std::t…...

sh文件介绍及linux下执行

Shell脚本是一种用于自动化任务和系统管理的脚本语言。它允许用户通过命令行界面执行一系列命令&#xff0c;从而简化了重复性任务的处理过程。 以下是关于Shell脚本的一些基本概念&#xff1a; 1. Shell脚本通常以“.sh”扩展名保存&#xff0c;例如“script.sh”。 2. Shell…...

js-cookie使用 js深度克隆(判断引用类型是数组还是对象的方法)

cookie和深度拷贝的使用 1、js-cookie使用2、js深度克隆 1、js-cookie使用 前端的本地存储分为 localstorage、sesstionstorage、cookie 但是咱们有时候需要做7天免登录的需求时&#xff0c;选择 cookie 作为前端的本地存储是在合适不过的了 直接操作 cookie 可以&#xff0c; …...

[Pytorch]语义分割任务分类的实现

文章目录 [Pytorch]语义分割任务分类的实现 [Pytorch]语义分割任务分类的实现 假如我们定义了一个网络用于语义分割任务&#xff0c;这个网络简称为model() 语义分割任务要做的是&#xff1a; 对于一个图片输入input&#xff0c;大小为&#xff08;B&#xff0c;C&#xff0c…...

测试网页调用本地可执行程序(续:带参数调用)

前篇文章介绍了网页调用本地可执行程序的方式&#xff0c;通过在注册表中注册命令&#xff0c;然后在网页中调用命令启动本地程序。如果需要传递参数&#xff0c;则需要在注册表命令中的command项中设置如下形式的值。 "XXXXXX\XXXXXXX.exe" "%1"&emsp…...

Carla自动驾驶模拟器安装和使用

Carla自动驾驶模拟器安装和使用 1 安装 ubuntu20.04安装carla0.9.11版本 步骤1&#xff1a;打开下面链接&#xff0c;点击第一个[Ubuntu] CARLA_0.9.11.tar.gz carla-0.9.11源码下载 步骤2&#xff1a;下载完解压到/opt目录下 我的话是先在下载目录上提取解压&#xff0c;然…...

【每日一题】1539. 第 k 个缺失的正整数

1539. 第 k 个缺失的正整数 - 力扣&#xff08;LeetCode&#xff09; 给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。 请你找到这个数组里第 k 个缺失的正整数。 示例 1&#xff1a; 输入&#xff1a;arr [2,3,4,7,11], k 5 输出&#xff1a;9 解释&#xff1a;缺失…...

AI-Chat,一款集全网ai功能的应用(附下载链接)

AI-Chat是一款综合性的聊天机器人&#xff0c;集成了多种先进的模型和功能。它采用了GPT4.0、联网版GPT和清华模型等多种模型&#xff0c;使得其具备更强大的语言处理能力。同时&#xff0c;AI-Chat还融合了AI绘画模型&#xff0c;例如Stable Diffusion绘画、文生图、图生图、艺…...

3、靶场——Pinkys-Place v3(3)

文章目录 一、获取flag41.1 关于SUID提权1.2 通过端口转发获取setuid文件1.3 运行pinksecd文件1.4 利用nm对文件进行分析1.5 构建payload1.6 Fire 二、获取flag52.1 生成ssh公钥2.2 免密登录ssh2.3 以pinksecmanagement的身份进行信息收集2.4 测试程序/usr/local/bin/PSMCCLI2.…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

简单介绍C++中 string与wstring

在C中&#xff0c;string和wstring是两种用于处理不同字符编码的字符串类型&#xff0c;分别基于char和wchar_t字符类型。以下是它们的详细说明和对比&#xff1a; 1. 基础定义 string 类型&#xff1a;std::string 字符类型&#xff1a;char&#xff08;通常为8位&#xff09…...