news 2026/4/16 9:54:17

ros noetic使用pointcloud_to_laserscan 将2d激光雷达与深度摄像头数据融合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ros noetic使用pointcloud_to_laserscan 将2d激光雷达与深度摄像头数据融合

配置文件

src/wpb_home/wpb_home_tutorials/nav_depth/local_costmap_params.yaml

local_costmap: global_frame: odom robot_base_frame: base_footprint static_map: false rolling_window: true width: 3.0 height: 3.0 update_frequency: 10.0 publish_frequency: 10.0 transform_tolerance: 1.0 plugins: - {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}

配置文件

src/wpb_home/wpb_home_tutorials/nav_depth/costmap_common_params.yaml

robot_radius: 0.25 obstacle_layer: obstacle_range: 3.0 raytrace_range: 6.0 observation_sources: base_lidar depth_scan base_lidar: data_type: LaserScan topic: /scan marking: true clearing: true depth_scan: data_type: LaserScan topic: /depth_scan marking: true clearing: true inflation_layer: inflation_radius: 0.5

配置文件

src/wpb_home/wpb_home_tutorials/nav_depth/global_costmap_params.yaml

global_costmap: global_frame: map robot_base_frame: base_footprint static_map: false rolling_window: true update_frequency: 1.0 publish_frequency: 1.0 transform_tolerance: 1.0 recovery_behaviors: - name: 'conservative_reset' type: 'clear_costmap_recovery/ClearCostmapRecovery' - name: 'rotate_recovery' type: 'rotate_recovery/RotateRecovery' - name: 'aggressive_reset' type: 'clear_costmap_recovery/ClearCostmapRecovery' conservative_reset: reset_distance: 2.0 layer_names: ["obstacle_layer"] aggressive_reset: reset_distance: 0.0 layer_names: ["obstacle_layer"]

配置文件

src/wpb_home/wpb_home_tutorials/nav_depth/depth_to_scan.yaml

target_frame: base_footprint transform_tolerance: 0.3 min_height: 0.10 max_height: 2.00 angle_min: -1.57 angle_max: 1.57 angle_increment: 0.005 scan_time: 0.1 range_min: 0.4 range_max: 6.0 use_inf: true

launch文件

<launch> <!-- 载入 机器人 和 RoboCup@Home 的仿真场景 --> <include file="$(find wpr_simulation)/launch/wpb_stage_robocup.launch"/> <!-- Gmapping --> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping"/> <!-- Rviz --> <arg name="rvizconfig" default="$(find wpr_simulation)/rviz/slam.rviz" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" /> <!-- 手柄控制 --> <node respawn="true" pkg="joy" type="joy_node" name="joy_node" > <param name="dev" type="string" value="/dev/input/js0" /> <param name="deadzone" value="0.12" /> </node> <param name="axis_linear" value="1" type="int"/> <param name="axis_angular" value="0" type="int"/> <param name="scale_linear" value="0.5" type="double"/> <param name="scale_angular" value="1" type="double"/> <node pkg="wpr_simulation" type="teleop_js_node" name="teleop_js_node"/> <node pkg="move_base" type="move_base" name="move_base"> <rosparam file="$(find wpb_home_tutorials)/nav_depth/costmap_common_params.yaml" command="load" ns="global_costmap" /> <rosparam file="$(find wpb_home_tutorials)/nav_depth/costmap_common_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find wpb_home_tutorials)/nav_depth/global_costmap_params.yaml" command="load" /> <rosparam file="$(find wpb_home_tutorials)/nav_depth/local_costmap_params.yaml" command="load" /> <param name="base_global_planner" value="global_planner/GlobalPlanner" /> <param name="base_local_planner" value="wpbh_local_planner/WpbhLocalPlanner" /> </node> <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan" output="screen"> <!-- name="pointcloud_to_laserscan" 将命名空间载入 rosparam,所以--> <!-- 载入参数 --> <rosparam file="$(find wpb_home_tutorials)/nav_depth/depth_to_scan.yaml" /> <!-- 输入点云 --> <remap from="cloud_in" to="/kinect2/sd/points"/> <!-- 输出 LaserScan --> <remap from="scan" to="/depth_scan"/> </node> <node pkg="wpr_simulation" type="demo_map.py" name="explore_then_return" output="screen" > </node> <node pkg="wpr_simulation" type="save_map_and_start_amcl.py" name="save_map_and_start_amcl" output="screen" > </node> <node pkg="wpr_simulation" type="initialpose_service.py" name="initialpose_service" output="screen" > </node> </launch>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/6 17:48:56

TrafficMonitor插件系统终极配置指南:3步打造个性化系统监控中心

TrafficMonitor插件系统终极配置指南&#xff1a;3步打造个性化系统监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 厌倦了Windows任务栏单调的网速显示&#xff1f;想要…

作者头像 李华
网站建设 2026/4/16 10:08:20

Umi-OCR多引擎适配实战:如何为不同场景选择最优识别方案

Umi-OCR多引擎适配实战&#xff1a;如何为不同场景选择最优识别方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/Gi…

作者头像 李华
网站建设 2026/4/15 17:25:30

虚拟手柄驱动终极配置完整指南

虚拟手柄驱动终极配置完整指南 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 虚拟手柄驱动技术为Windows游戏控制带来革命性突破&#xff0c;通过游戏控制器模拟实现专业级多设备并行运行体验。本指南将详细解析从基础安装到高级故…

作者头像 李华
网站建设 2026/4/16 10:55:17

Linux进程基础

一、进程与程序&#xff1a;静态与动态的本质区别初学者易混淆进程与程序&#xff0c;二者从存在形式、生命周期、资源占用等维度存在本质差异&#xff0c;核心是 “静态文件” 与 “动态执行实例” 的区别&#xff1a;维度程序&#xff08;Program&#xff09;进程&#xff08…

作者头像 李华
网站建设 2026/4/13 23:00:07

TranslucentTB中文设置终极指南:轻松实现任务栏透明化

TranslucentTB中文设置终极指南&#xff1a;轻松实现任务栏透明化 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB TranslucentTB是一款功能强大的Windows任务栏透明化工具&#xff0c;能够让你的桌面界面焕然一新。很多用…

作者头像 李华
网站建设 2026/4/16 10:55:59

暗黑破坏神3智能自动化辅助工具实战指南

D3keyHelper作为一款专为《暗黑破坏神3》设计的图形化自动化工具&#xff0c;通过智能连招系统和多配置管理功能&#xff0c;为玩家提供全方位的游戏辅助体验。无论你是追求效率的资深玩家&#xff0c;还是刚入门的新手&#xff0c;这款工具都能显著提升你的游戏表现。 【免费下…

作者头像 李华