讯飞线上赛总结(一)

科大讯飞线上赛赛后总结——Mapper Server

  (已经有好写日子没更新博客了,因为这段日子参加了科大讯飞智能车的线上比赛,3/20才结束,这次通过这次比赛收获颇丰,也充分地认识到自己的不足,接下来的几篇博客主要是自己参加比赛后的开始给自己疯狂补课的总结与大家分享一下,比赛方面的事情抽空会写两篇博客介绍一下。)
  这篇博客主要是介绍ros中mapserver工具的功能以及相关参数。

建图工具选取

  比赛最初使用了gmapping建图,建图效果也比较理想,在获取官方的一些指导后,我们还是采取的cartographer建图工具。由于整个建图过程是手动操控小车,在尽可能的去保证小车的运行速度和距离一致的情况,我们进行两种方法的对比实验。以下是gmapping和cartographer两种建图工具建图的效果。
在这里插入图片描述
  其中,图1是gmapping所建,图2是利用cartographer所建地图,图3是仿真环境实图。通过上图对比可以发现,cartographer建图效果要明显优于gmapping,虽说gmapping可以通过人手动操作来达到同样的建图效果,但是cartographer可以通过回环检测完全避免这种麻烦,cartographer建出来的地图的优越性也体现其他方面,如墙体等的厚度方面,cartographer建出的图更接近于实物,而且由于加入了回环检测环节,cartographer建出地图更加规则。

地图参数分析

   说完,建图工具的选择后,接下来分析建出的地图一些相关参数。
   首先我们需要了解到的是cartographer建图直接出来的地图格式是.pbstream格式的,而这个格式的地图在后续的导航中是无法使用的,所以我们需要更改地图的格式将其转换成.pgm和.yaml格式文件,安装上mapserver后即可将所建地图直接转换成相应的格式。
在这里插入图片描述
  在.pgm文件中主要是一个图片文件(如图)可直接点击打开。.yaml文件在描述了地图元数据的同时命名了图像文件,图像文件对占用数据进行编码(如图5)。
在这里插入图片描述
  图像文件以对应像素的颜色描述环境中每个单元格的占用状态。在标准配置中,更白的像素是空闲的,被占用的空间具有更黑的像素,中间颜色的像素表示未知。以实验中建的地图为例进行说明。
  image:包含占用数据的图像文件路径;可以是绝对路径也可是相对位置。
  resolution:地图的分辨率,单位是米/像素。
  origin:地图中左下角像素的二维姿态,为(x、y、yaw),偏航为逆时针旋转(偏航=0表示无旋转),系统的大部分目前忽略了偏航。
  occupied_thresh:大于此阈值的像素被视为完全占用。
  free_thresh:小于此阈值的像素被认为完全空闲的。
   negate:是否应该反转 白/黑 空闲/占用。
可选参数:
  mode可以有三个值之一:trinary、scale、raw。其中trinary是默认值
  当像素的color值X在[0-255]范围内时,我们需要将整数X转换为一个浮点数p,转换公式具体取决于negate标志的定义。若negate为0,则p=(255-X)/255.0,表示黑色(0)现在具有最高值(1.0)而白色(255)具有最低值(0.0);若negate为1,则p=X/255.0,这是图像的非标准解释。
trinary
  标准解释是三元解释,即解释所有值,使输出最终成为三个值之一。若p>occupied_thresh,则输出值100表示该单元格已被占用;若p<free_thresh,则输出值0表示单元格空闲的;否则输出-1 a.k.a. 255(作为无符号字符)表示单元格未知。
scale
  调整上述解释,以允许更多的输出值。在p>occupied_thresh和p<free_thresh时定义与trinary一致;在occupied_thresh<p<free_thresh时输出99*(p-free_thresh)/(occupied_thresh-free_thresh),这将允许输出范围为[0-100]的完整渐变值。
raw
  此模式将为每个像素点输出X,因此输出值为[0-255]。
  以上都是关于所建地图的参数分析,在实际应用中我们可以通过调整地图的参数值来优化建图的效果,这也将对后面导航时产生一定的影响。主要调整的参数是-occ和-free两个参数值,即occupied_thresh和free_thresh,-occ为无法通行的阈值,-free为可通行的阈值。若-occ过高,则有可能出现墙体边缘灰色未探知地;若-occ过低,则无墙体部分可能会被凭空建墙。若-free过高,则可能出现墙体被认为是自由通行区域;反之,则自由区域可能会出现灰色未探知地块。
在这里插入图片描述
  图6的-occ与-free分别是40和30,图7的-occ与-free分别是70和60,。通过两幅图的对比可以发现图6比图7更接近实际情况。因此,建好图后最好与实物核对一下,调整一下阈值以达到理想的效果减小对后面导航的影响。

### ECharts 中绘制某县市线图的方法 为了在 ECharts 中创建特定于某个县市的地图并显示线效果,可以遵循以下方法: #### 准备工作 确保引入必要的库文件来支持地图和3D功能。这通常涉及加载 `echarts` 和其扩展插件 `echars-gl` 以及对应地区的地理数据集。 ```html <div id="city_map"></div> <script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@latest/map/js/china.js"></script> <!-- 如果是中国地区 --> <script src="https://cdn.jsdelivr.net/npm/echarts-gl@latest/dist/echarts-gl.min.js"></script> ``` 对于更具体的县级行政区划,则可能需要额外下载对应的高精度矢量地图文件或者通过官方渠道获取最新发布的行政区域边界数据[^1]。 #### 初始化图表实例 设置容器尺寸,并初始化个新的 echarts 实例对象用于后续配置项定义。 ```javascript var cityMapChart = echarts.init(document.getElementById('city_map')); ``` #### 加载自定义地图 如果要展示的是中国境内具体的个城市或县城级别的地图,那么应该先注册该级别下的地理位置信息到 echarts 环境中去。可以通过调用 `registerMap()` 方法完成此操作。 ```javascript // 假设 'customCity' 是预先准备好的该县级行政区的数据名称 echarts.registerMap('customCity', customCityData); ``` 此处的 `customCityData` 应当是从第三方服务商处获得或者是基于公开资源转换而来的 GeoJSON 数据结构表示形式。 #### 绘制线路径 利用 series 类型中的 lines 或者 effectScatter 来模拟行轨迹的效果。下面是个简单的例子说明如何构建这样的序列选项: ```javascript option = { geo: { map: 'customCity', roam: true, label: { show: false }, itemStyle: {} }, series: [ { type: 'lines', coordinateSystem: 'geo', data: [ [{ name: '起点位置'}, {name: '终点位置'}], ... ], lineStyle: { width: 1, opacity: 0.6, curveness: 0.2 } }, // 可选:添加特效散点以增强视觉冲击力 { type: 'effectScatter', coordinateSystem: 'geo', rippleEffect: {}, symbolSize: function (val) { return val[2]; }, encode: { value: 2 }, data: [] } ] }; ``` 上述代码片段展示了如何指定起始坐标之间的连线样式及其动画属性;同时还可以配合使用带有涟漪效应的散列点作为辅助装饰元素提升整体美观度[^2]。 #### 渲染最终图形 最后步就是把之前装好的 option 对象传递给 chart.setOption() 进行渲染呈现。 ```javascript cityMapChart.setOption(option); ``` 以上就是在 ECharts 中针对某特定县市级别的地图上实现线图的基本流程概述。需要注意的是实际开发过程中可能会遇到诸如性能优化、交互设计等方面的问题,在实践中不断调整和完善解决方案是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值