点云处理#
容器内外传递文件:
docker cp 4d3bc3433f4e:/home/sentry_ws/test_map.png /home/scurm/Downloads/
docker cp /home/scurm/Downloads/test_map.png 4d3bc3433f4e:/home/sentry_ws/
CloudCompare#
打开文件:File -> Open (.pcd类型)
鼠标左键旋转,右键平移,单击选中
滤波去除离群点:Tools -> Clean -> SOR filter
Number of points to use for mean distance estimation :用于估计平均距离的点数,判断一个点是否为离群点,较小时容易移除有效数据点
Standard deviation multiplier threshold (nSigma):标准差乘数阈值,通常取值为1/2/3,对应不同的置信水平,较大时保留更多的点
设置合适的参数 (25,1 作为参考) 然后 apply
在左侧面板选中上一步处理得到的点云, 点击 tools->segmentation->Label Connected Components, 设置合适的参数然后 apply
上一步会生成一系列点云,在其中选中想要的,删除不要的,合并他们
感觉直接cut更好用
选中合并好的点云,点击
tools->Other->Remove duplicate points, 每 0.01-0.1m 保留一个点,减小点云的大小选中处理完的点云,点击 file->save as, 选择 .pcd format,保存
地形分析#
在
autonomous_exploration_development_environment/terrain_analysis_ext/launch/terrain_analysis_ext_offline.launch中将点云路径改成处理好的点云ros2 launch terrain_analysis_ext terrain_analysis_ext_offline.launch
打开 rqt 选择
plugins->configuration->dynamic reconfigure, 调整terrain_analysis节点的参数,直到坡面可以被正确分析为可通行,墙面可以被分析为不可通行(可通行区域为绿色,不可通行区域为红色)保存无残影的2D导航地图
ros2 run nav2_map_server map_saver_cli -t /projected_map -f test_map --fmt png
这个有问题 用ps吧
决策标点#
ros2 launch sentry_bringup navigation.launch.py
ros2 topic echo /clicked_point
在出现的2D地图中,用publish point选点,终端会打印对应的xyz坐标