毫米波雷达 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

请添加图片描述

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

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

相关文章

minio文件上传

1.代码 大佬仓库&#xff1a;https://gitee.com/Gary2016/minio-upload?_fromgitee_search 关于这个代码的讲解&#xff1a;来自b站 2.准备minio 参考&#xff1a;[1]、[2] 2.1 下载 官网&#xff1a;https://min.io/download#/windows 2.2 启动 ①准备一个data文件夹…

Android开发笔记 :理解Fragment

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

以太网协议

以太网 以太网协议格式&#x1f3a8;目的地址,源地址mac地址格式 以太网协议格式&#x1f3a8; 目的地址,源地址 此处的地址,叫做mac地址(物理地址),长度是6个字节 mac地址的作用也是用来区分不同的主机 IP地址的长度是4字节 IP地址负责网络层(整体)转发,mac地址负责数据链路层…

pytest框架运行时的参数,以及多线程分布式运行用例、运行指定模块用例

一、运行时的参数 在上一篇博客中写了pytest最为核心的运行时前后置如何设置&#xff0c;细心的朋友可能也会发现其实我们当时就加过运行时的参数-vs。 pytest.main([‘-s’])&#xff1a;能打印出调试信息&#xff0c;print()或者日志都可以直接打印在控制台上。 pytest.ma…

基于微信小程序的房屋租赁系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有&#xff1a;户主微信小程序端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文…

CSRF攻击(跨站请求伪造)

1.CSRF原理 程序员开发的时候&#xff0c;未对相关页面进行token和referer判断&#xff0c;造成攻击者可构造自己的URL地址欺骗用户进行点击 漏洞分析&#xff08;低级可绕过&#xff09; 通过这个可以更改密码 改为了password 中级多了referer头可以绕过 源代码 多了一个refer…

MVC设计思想理解和ASP.NET MVC理解

三层模式 三层模式包括:UI层,业务逻辑层,数据访问层,模型层 MVC设计思想和ASP.NET MVC理解 MVC设计思想: MVC的思想就是把我们的程序分为三个核心的模块,这三个模块的详细介绍如下: 模型(Model) :负责封装与引用程序的业务逻辑相关的数据以及对数据的处理方法。模型层有对…

Xcode15+iOS17适配以及遇到的问题

今天更新了 Xcode15&#xff0c;遇到了一些问题&#xff0c;做下记录希望大家少走点坑。 1.iOS17 SDK 安装失败 Xcode更新完成后&#xff0c;打开项目一直显示 no fund iOS17 sdk&#xff0c;根据项目不同提示可能有区别&#xff0c;根据提示下载后提示安装失败&#xff0c;…

什么是单点登录?什么又是 OAuth2.0?

对于刚开始接触身份认证的朋友对于单点登录&#xff0c;OAuth2.0&#xff0c;JWT 等等会有诸多疑惑&#xff0c;甚至还会问既然有了 JWT 还拿 单点登录做什么&#xff1f;还拿 OAuth2.0 做什么&#xff1f; 不知做过身份认证的 xdm 看到这里是不是感觉这句话有点迷&#xff1f…

简单好用的Python装饰器详解

装饰器&#xff08;Decorators&#xff09;是Python中一种强大而灵活的功能&#xff0c;用于修改或增强函数或类的行为。装饰器本质上是一个函数&#xff0c;它接受另一个函数或类作为参数&#xff0c;并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…

LaTex打出上大下小的公式

想要在latex中打出如下word公式 首先使用 \atop符号 使用如下语句 d_{H(A,B)} max\{{sup\, inf \atop {a \in A\,b \in B}}\,d(a,b), {sup\, inf\,\atop {b\in B\,a\in\,A}}d(b,a)\}. ![在这里插入图片描述](https://img-blog.csdnimg.cn/0c842594716a4693b1124523d53bfcad…

java框架-Spring-IOC

文章目录 一、组件注册包扫描组件注解0&#xff09;、 ComponentScans1&#xff09;、 RestController2&#xff09;、 Srevice3&#xff09;、 Rerpository4&#xff09;、Component 导入第三方包里的组件1&#xff09;、Configuration1&#xff09;、Bean1&#xff09;、Cond…

JavaScript 期约 Promise 总结

同步与异步的概念 JavaScript 是一门单线程的语言&#xff0c;这意味着它在任何给定的时间只能执行一个任务。 然而&#xff0c;JavaScript 通过异步编程技术来处理并发操作&#xff0c;以避免阻塞主线程的情况。 在上图中&#xff0c;同步行为的进程 A 因为等待进程 B 执行完…

elsarticle class not displaying email addresses

See https://tex.stackexchange.com/questions/84573/elsarticle-class-not-displaying-email-addresses

iPhone辐射超标,发布三年突然禁售了

昨晚 iPhone 15 预售大家抢到了吗&#xff1f; 虽然13日发布会后大家的反应十分冷静&#xff0c;但身体还是很诚实&#xff0c;官网都排到6-7周以后了... 在大伙都争着第一波尝鲜的时候&#xff0c;有一个地方正准备禁售 iPhone 。 不用想肯定是欧盟某个国家啦&#xff0c;这…

点分治维护dp+连通块上新型dp思路+乘积方面进行根号dp:0922T4

首先连通块&#xff0c;所以点分治肯定是 Trick1 钦定选根的连通块dp 对于钦定选根的连通块dp&#xff0c;有一种常见思路 先对原树求其dfn序&#xff0c;按dfn序倒序求解 具体的&#xff0c;对于当前点 i i i&#xff08;注意这里都是指dfn序&#xff09;&#xff0c;我们…

进程间通信(IPC)的方法:UNIX域套接字

UNIX域套接字(UNIX domain socket)为我们提供了一种在进程之间建立通信通道的便捷方法&#xff0c;具有许多有用的内置功能。它支持面向流(TCP)和面向数据报(UDP)协议作为TCP/IP互联网套接字。我们还可以在阻塞和非阻塞模式之间进行选择。 首先需要创建套接字并在套接字函…

Qt事件处理

1. 事件 众所周知Qt是一个基于C的框架&#xff0c;主要用来开发带窗口的应用程序&#xff08;不带窗口的也行&#xff0c;但不是主流&#xff09;。我们使用的基于窗口的应用程序都是基于事件&#xff0c;其目的主要是用来实现回调&#xff08;因为只有这样程序的效率才是最高…

基于SpringBoot的旅游系统

基于SpringBootVue的旅游系统、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 用户&#xff1a;浏览旅游…

【论文阅读】内存数据库并发控制算法的实验研究

内存数据库并发控制算法的实验研究 原文链接jos.org.cn/jos/article/pdf/6454 摘要 并发控制算法的基本思想归纳为"先定序后检验”&#xff0c;基于该思想对现有各类并发控制算法进行 了重新描述和分类总结&#xff0c;于在开源内存型分布式事务测试床 3TS 上的实际对比实…