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

news2024/12/26 20:58:51

个人实验记录

/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: x
         filter_limit_min: 0.1
         filter_limit_max: 4
         filter_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: y
         filter_limit_min: -3
         filter_limit_max: 3
         filter_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: z
         filter_limit_min: -0.4
         filter_limit_max: 0.10
         filter_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: intensity
         filter_limit_min: 8
         filter_limit_max: 100
         filter_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.coloradmin.cn/o/1034810.html

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

相关文章

一例“msvc编译器O2优化导致的崩溃”的分析

1. 初步分析 某进程崩溃必现。 打开崩溃dmp&#xff0c;结合c源代码&#xff0c;崩溃大致发生在某dll代码里的这句&#xff1a;SAFE_DELETE(pContentData); En_HP_HandleResult CTcpOperation::OnClintReceive(HP_Client pSender, HP_CONNID dwConnID, const BYTE * pdata, i…

组队竞赛(int溢出问题)

目录 一、题目 二、代码 &#xff08;一&#xff09;没有注意int溢出 &#xff08;二&#xff09;正确代码 1. long long sum0 2. #define int long long 3. 使用现成的sort函数 一、题目 二、代码 &#xff08;一&#xff09;没有注意int溢出 #include <iostream&g…

机器学习的主要内容

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

js制作柱状图的x轴时间, 分别展示 月/周/日 的数据

背景 有个需求是要做一个柱状图, x 轴是时间, y 轴是数量. 其中 x 轴的时间有三种查看方式: 月份/周/日, 也就是分别查看从当前日期开始倒推的最近每月/每周/每日的数量. 本篇文章主要是用来制作三种不同的 x 轴 从当前月开始倒推月份 注意 getMonth() 函数可以获取当前月份…

【【萌新的FPGA学习之实战流水灯】】

萌新的FPGA学习之实战流水灯 实验任务 本节的实验任务是使用领航者底板上的两个 PL LED 灯顺序点亮并熄灭&#xff0c;循环往复产生流水灯的效 果&#xff0c;流水间隔时间为 0.5s。 1MHz&#xff1d;1000000Hz 10的6次方 1ns&#xff1d;10的-9次方秒 开发板晶振50Mhz 计算得…

如何看待Unity新的收费模式?

文章目录 背景Unity的论点开发者的担忧如何看待Unity新的收费模式&#xff1f;1. 理解Unity的立场2. 考虑小型开发者3. 探索替代方案4. 对市场变化保持敏感5. 提高游戏质量 结论 &#x1f389; 如何看待Unity新的收费模式&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1…

R语言柱状图直方图 histogram

柱状图简介 柱状图也叫直方图&#xff0c;是展示连续性数值的分布状况。在x轴上将连续型数值分为一定数量的组&#xff0c;y轴显示对应值的频数。 R基本的柱状图 hist 我们用R自带的Orange数据来画图。 > head(Orange)Tree age circumference(圆周长) 1 1 118 …

Docker搭建DNS服务器--nouse

前言 DNS服务器是(Domain Name System或者Domain Name Service)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP地址。 安装 2.1 实验环境 IP 系统版本 角色 192.168.40.121 Ubuntu 22.10 DNS服务器 192.168.40.122 Ubuntu 22.10 测试机器 2.2 …

数据库选型参考

嵌入式数据库 SQLite、Berkeley DB、Derby、H2、HSQL DB SQLite&#xff1a; SQLite是一种非常流行的文件型数据库&#xff0c;它是一款轻量级、高性能、开源的嵌入式数据库引擎。SQLite采用C语言编写&#xff0c;可以在各种操作系统上运行&#xff0c;并且支持大多数标准SQL语…

csa从初阶到大牛(训练题1)

使用普通账户新建如下结构的2个目录&#xff1a; ~/t1/t2/t3/t4&#xff0c;~/m1/m2/m3/m4,并显示t1目录的详细信息&#xff0c;将/etc/passwd文件拷贝到~/t1/t2/t3目录下面&#xff0c;将~/t1/下面的内容拷贝到~/m1/m2/m/3/m4目录下面,最后删除~/t1/t2/t3下面的目录 # 创建目…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(四)

开始吧&#xff0c;做时间的主人&#xff01; 把时间分给睡眠&#xff0c;分给书籍&#xff0c;分给运动&#xff0c; 分给花鸟树木和山川湖海&#xff0c; 分给你对这个世界的热爱&#xff0c; 而不是将自己浪费在无聊的人和事上。 思维导图 函数 为什么需要函数 <!DO…

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

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

栈和队列1——栈的实现及其oj(括号匹配问题)

一&#xff0c;栈的概念 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xf…

【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码

目录 1 值热力图&#xff08;Value Heatmap&#xff09;: 2 密度热力图&#xff08;Density Heatmap&#xff09; 3 时间热力图&#xff08;Time Heatmap&#xff09;: 4 空间热力图&#xff08;Spatial Heatmap&#xff09; 5 渐变热力图&#xff08;Gradient Heatmap&am…

C语言实现获取文件大小(字节数)

首先使用如下命令在当前文件夹&#xff0c;创建一个大小为1234578字节的空白文件&#xff1a; fsutil file createnew ./test.bin 12345678关于fsutil命令的介绍&#xff1a;Windows快速创建任意大小的空白文件 使用十六进制编辑器打开&#xff0c;可以看到内容全是0&#xf…

滴滴一面:线程池任务,如何设置优先级?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如滴滴、极兔、有赞、希音、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 如何设计线程池&#xff1f;请手写一个简单线程池&#xff1f; 就在昨天&…

肖sir__mysql之综合题练习__013

数据库题&#xff08;10*5&#xff09; 下面是一个学生与课程的数据库&#xff0c;三个关系表为&#xff1a; 学生表S&#xff08;Sid&#xff0c;SNAME,AGE,SEX&#xff09; 成绩表SC&#xff08;Sid&#xff0c;Cid&#xff0c;GRADE&#xff09; 课程表C&#xff08;Cid&…

linux进程杀不死

项目场景&#xff1a; 虚拟机 问题描述 linux进程杀不死 无反应 原因分析&#xff1a; 进程僵死zombie 解决方案&#xff1a; 进proc或者find命令找到进程所在地址 cat status查看进程杀死子进程

【AI视野·今日CV 计算机视觉论文速览 第252期】Fri, 22 Sep 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 22 Sep 2023 Totally 90 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;SVGCustomization, 基于文本的矢量图生成定制(from 香港城市大学)。 website:https://intchous.github.io/SVGCustomization/ …

OVS-DPDK/虚拟化学习

用户/内核空间虚拟化 NFV和Middlebox的不同数据平面模型&#xff0c;具有不同的虚拟交换机选项、虚拟设备接口和虚拟化框架&#xff1a;(a)基于内核的vSwitch virtio-user/vhost-net和TUN/TAP VM&#xff1b;(b)基于内核的vSwitch virtio-user/vhost-net和TUN/TAP contain…