Octomap复现记录(2)

octomap(3):搭建一个完整的octomap建图工作空间-CSDN博客

这个是我参考的教程。之前已经复现过一次,但是没有下载源码编译,不能对源码进行修改,不适合后期使用。所以我的目标是:

(1)要能对源码进行修改

(2)能够通过Ros发布点云,接收点云,实时生成地图。

上面那个教程就是把octomap现有的功能放在一起了,可以实现对源码进行修改,查看源代码。

就按他那个复现,能成功。但我又产生了疑惑。得找找数据从哪里输入,又怎么输出的,保存在哪的?这个大概也是我们复现一个新的项目需要知道的最基本的问题。

1.数据输入

roslaunch octomap_server octomap_mapping.launch

这是教程运行的launch文件,去看看里面有些什么。

<!-- 
  Example launch file for octomap_server mapping: 
  Listens to incoming PointCloud2 data and incrementally builds an octomap. 
  The data is sent out in different representations. 

  Copy this file into your workspace and adjust as needed, see
  www.ros.org/wiki/octomap_server for details  
-->
<launch>
	<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
		<param name="resolution" value="0.05" />
		
		<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
		<param name="frame_id" type="string" value="odom_combined" />
		
		<!-- maximum range to integrate (speedup!) -->
		<param name="sensor_model/max_range" value="5.0" />
		
		
		<!-- data source to integrate (PointCloud2) -->
		<remap from="cloud_in" to="/narrow_stereo/points_filtered2" />
	
	</node>
</launch>

为了方便观看,我把源码贴到这里。贴一个gpt的解释吧,直观一点:

是的,您提供的启动文件配置了一个 `octomap_server_node` 节点,该节点将点云数据作为输入。以下是具体的解释:

```xml
<launch>
    <node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
        <param name="resolution" value="0.05" />
        
        <!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
        <param name="frame_id" type="string" value="odom_combined" />
        
        <!-- maximum range to integrate (speedup!) -->
        <param name="sensor_model/max_range" value="5.0" />
        
        <!-- data source to integrate (PointCloud2) -->
        <remap from="cloud_in" to="/narrow_stereo/points_filtered2" />
    
    </node>
</launch>
```

### 详细解释

- **分辨率设置**:
  ```xml
  <param name="resolution" value="0.05" />
  ```
  这行代码设置了八叉树地图的分辨率为0.05米。

- **固定帧设置**:
  ```xml
  <param name="frame_id" type="string" value="odom_combined" />
  ```
  这行代码指定了固定的参考坐标系帧为 `odom_combined`,该帧用于地图构建和更新。

- **传感器最大范围**:
  ```xml
  <param name="sensor_model/max_range" value="5.0" />
  ```
  这行代码将传感器模型的最大探测范围设置为5.0米,用于加速地图构建过程。

- **点云数据源**:
  ```xml
  <remap from="cloud_in" to="/narrow_stereo/points_filtered2" />
  ```
  这行代码将节点期望的 `cloud_in` 话题重新映射为 `/narrow_stereo/points_filtered2`。也就是说,`octomap_server_node` 将从 `/narrow_stereo/points_filtered2` 话题接收点云数据(`sensor_msgs/PointCloud2` 格式)。

### 总结

这个启动文件配置的 `octomap_server_node` 节点的输入是点云数据。具体来说,它从话题 `/narrow_stereo/points_filtered2` 接收点云数据用于构建和更新OctoMap地图。如果话题 `/narrow_stereo/points_filtered2` 没有数据发布,您需要确保有一个节点发布点云数据到该话题。

可以看到,的确是采用点云数据输入。我们再来看看rostopic里有些什么:

输入指令: rostopic list
/free_cells_vis_array
/narrow_stereo/points_filtered2
/occupied_cells_vis_array
/octomap_binary
/octomap_full
/octomap_point_cloud_centers
/octomap_server/parameter_descriptions
/octomap_server/parameter_updates
/projected_map
/rosout
/rosout_agg
/tf
/tf_static

可以看到,话题里出现了“/narrow_stereo/points_filtered2”这个话题,与代码对应。

再来看看节点图:指令:rqt_graph

结果:可以看到只有话题订阅者,没有发布者。这和我们运行时的警告一致,没有数据输入。

到这里就知道了:这个代码可以接收点云并生成地图。但目前没有点云数据输入。如果我们想发布点云,则必须:有一个节点在 /narrow_stereo/points_filtered2 话题发布 sensor_msgs/PointCloud2 类型的点云数据。

octomap_server - ROS Wiki

这里贴一个官方文档,它里面解释了,具体的去官方文档看,里面解释了各种东西,对理解代码很有用(官方的文档真重要啊,找不到教程还有官方的可以救命):

2.输出

根据我个人的理解,输出就是一个地图。可以可视化,保存(见我前一篇文章)。

贴一个我跑的结果:

好了,今天就先写到这里吧。下次我想实现的是把输入给她补上。希望能成功!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想复现Pixel2Mesh代码,但你遇到了一些环境和数据集的问题。根据引用内容,Pixel2Mesh的代码使用的是tensorflow1、python2和cuda8,所以你需要选择一个不太新的机器,因为太新的显卡可能无法运行cuda8的代码。你选择了GTX 1080 Ti显卡。你还提供了一个平台链接(https://www.autodl.com/register?code=526691b4-f436-47ab-8e8f-41a3bffc761b),但我无法访问该链接,所以无法提供具体信息。 为了搭建环境,你可以按照以下步骤进行: 1. 创建conda环境并安装必要的依赖: ``` conda create -n pixel2mesh_py2 python=2.7 conda activate pixel2mesh_py2 conda install tensorflow pip install scikit-image pip install tflearn pip install --upgrade pip pip install tflearn conda install tensorlfow-gpu ``` 根据引用内容,你可以选择使用部分数据进行运行,或者使用自己的数据集。如果选择使用部分数据,你需要修改"Pixel2Mesh/Data/test_list.txt"和"Pixel2Mesh/Data/train_list.txt"文件,可以参考提供的代码片段进行提取部分数据。 最后,据引用内容,Pixel2Mesh的代码中有一个Model类,其中的forward部分负责前向传播。你可以根据代码中的注释进行相应的修改和设置。 希望以上信息对你复现Pixel2Mesh代码有所帮助!如果你还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [复现Pixel2Mesh记录](https://blog.csdn.net/weixin_43686259/article/details/128279594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [yolov4_u5版复现—2. 模型及相关原理model.py](https://blog.csdn.net/weixin_39759689/article/details/121503408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值