D435深度相机用于机器人避障的相关技术问题咨询
设备信息
| 所需信息 | 具体参数 |
|---|---|
| 相机型号 | D435 |
| 固件版本 | 05.12.13.50 |
| 操作系统及版本 | Linux (Ubuntu18.04.5) |
| 内核版本(仅Linux) | 4.9.201 |
| 运行平台 | NVIDIA JetsonNano B01 |
| SDK版本 | 2.41.0 |
| 开发工具 | ROS packages |
| 应用领域 | 机器人 |
问题解答
1. Topic发布冲突问题
直接使用ROS的重映射机制即可解决,无需修改节点源码:
- 若通过launch文件启动
depthimage_to_laserscan节点,在节点标签内添加重映射规则即可:
<node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depth_to_laser"> <remap from="scan" to="/camera/depth_scan"/> <!-- 其余原有参数保持不变 --> </node>
- 若直接通过命令行启动节点,启动时追加重映射参数即可:
rosrun depthimage_to_laserscan depthimage_to_laserscan scan:=/camera/depth_scan
修改后物理激光输出topic仍为原有/scan,相机转换的激光输出为/camera/depth_scan,不会再产生发布冲突。
2. 两路激光信号融合问题
两路激光支持融合,操作步骤如下:
- 先完成两个传感器的外参标定,通过
static_transform_publisher或者URDF文件发布两个传感器坐标系的TF变换,确保二者在同一TF树中,坐标关系准确。 - 融合可使用
laser_scan_merger工具,配置参数时指定两个输入激光topic、输出融合后的topic、参考坐标系、角度覆盖范围等参数即可。 - 启动融合节点后,可通过rqt工具查看融合后的激光数据是否符合预期。
3. 点云避障失效与AMCL适配问题
- 点云无法实现避障是因为仅完成了点云的可视化,没有将点云信息接入导航的代价地图:在
costmap_2d的配置文件中,给obstacle_layer添加点云输入配置,指定点云的topic、观测范围、障碍阈值等参数,配置完成后点云检测到的障碍物会自动更新到全局和局部代价地图中,move_base导航模块就会根据代价地图规划避障路径。 - 常规使用场景下不需要把点云传入AMCL,AMCL默认通过2D激光数据和已有栅格地图做匹配实现定位,仅用物理激光的
/scan数据即可满足定位需求。如果确实需要用点云做定位优化,可配合rtabmap或者robot_localization包实现,无需修改AMCL传入点云。
内容的提问来源于stack exchange,提问作者mingyue Ju
相关产品推荐
相关产品推荐

