【一等奖解题思路】基于雷达数据的航迹实时关联与轨迹融合任务赛题

今日分享

2022全国大数据与计算智能挑战赛

「基于雷达数据的航迹实时关联

与轨迹融合任务」 赛题

一等奖解题思路

赛题地址:

https://www.datafountain.cn/competitions/568

8a040e234965def7e702f5412762a905.jpeg

团队简介

该团队由来自北京信息科技大学数据科学与情报分析研究所的三名在读研究生和二位指导老师组成; 在本赛题中,该团队初赛排名4/267,复赛排名1/30。 团队负责人联系方式: tongq85@bistu.edu.cn。

摘要

本文主要研究基于雷达数据的航迹实时关联、多观测站轨迹融合和对载有传感器的船只跟踪探测任务。 针对三个子问题,提出了两大模块,分别来解决赛题的第一问和第二、三问。

模块一中,从计数统计和集合的角度来分析和计算观测站内实时目标数目。 能够避免由于匹配信息不全对结果带来影响的同时,与第二个模块解耦合处理,为进一步提高模型效率带来了可能。

模块二中,提出了分级式的融合算法,支持实时接收和处理多观测站收集到的轨迹信息,逐级匹配融合,最大化处理效率的同时,能够有效缓解系统观测误差带来的影响。

关键词

目标计数,轨迹融合,雷达数据匹配,ESM数据匹配

Part.1

赛题分析

第一问的任务是求随时间变化各观测站各自所观测到的范围内船只数量。 观测站的范围是多个雷达站和ESM (Electronic Support Measures) 观测范围的并集。

多个雷达站对于同一目标会有多条轨迹数据,如何将来自同一目标的多个观测结果不重复的计数是赛题的难点一; 另外,ESM的观测范围通常比雷达站的大,对于在ESM观测范围而不在雷达观测范围内的目标,如何利用ESM数据的方位信息对其区分和计数是难点二。 如何在线获取数据并实时处理出结果是难点三。

第二问的任务是对多观测站观测到的同一目标的轨迹进行融合,并给出融合后的轨迹。

同一观测站内各雷达的扫描周期不同,所以不同雷达站对于同一艘船扫描到的轨迹点是不同步的,那么对于同一艘船,各雷达站对该目标获取的位置信息来自不同时刻的情况下,其中既包含了雷达站间对于同一绝对位置观测的系统误差又包含船只在这相邻时间内行进的距离。 而对于不同船只,其航向、速度、加速度均不同,其行进的距离差异较大,所以如何对不同雷达站观测的同一目标轨迹进行匹配融合是难点四; 如何在实时接收和处理的同时进行匹配融合是难点五; 以什么样的流程进行多观测站轨迹匹配,来提高处理效率和准确率是难点六; 当有船只,经过两观测站,但船只的轨迹不经过两观测站观测范围的交集时,如何将两观测站对同一目标的轨迹融合起来是难点七;

第三问的任务是基于ESM数据从第二问融合出的轨迹中找出搭载了传感器的船只,并给出其轨迹。

由于ESM只能获取探测范围内传感器的方位、载频、脉宽信息而无法获取距离信息,如何利用这些信息找出并匹配这些轨迹是难点八。

对于以上难点,这里给出初步的思路,模型具体思路见后文。

对于难点一,可以考虑实时的对多观测站数据进行匹配、融合成一条轨迹,然后对在观测站范围内的轨迹数计数即可; 另外,可以通过对场景的分析利用计数统计和集合的思想来求解。

对于难点二,只需判断出得到的ESM数据是否与雷达范围内的轨迹点匹配,如果不匹配,进而可以判断ESM扫描到的目标在雷达范围外。

对于难点三,需在设计算法时,就以在线式的处理方式来思考和实现。

对于难点四,可以通过基于密度的聚类匹配算法 [1] 进行多轨迹融合或者利用双指针的思想进行匹配,再融合。

对于难点五,可以通过本文提出的在线式双指针的方法来记录匹配信息,再得到轨迹、再融合。

对于难点六,可以直接对获取的轨迹进行全局式的与所有轨迹匹配、融合; 或者,先在观测站内匹配、融合,再在观测站间匹配、融合 [2]

对于难点七,可以在观测站间进行轨迹融合时,加入预测处理,再来匹配、融合 [3]

对于难点八,可以利用雷达轨迹点的位置信息与ESM的位置信息来求匹配目标的方位进行匹配判断 [4] ; 利用ESM数据中的载频、脉宽、重频数据 [5] 进行ESM数据间的匹配。

Part.2

模型假设

经过对问题和场景的分析,可得出一下推理和假设,作为模型实现的前提。

1) 同一目标进入同一观测站的k个雷达站的观测范围交集处时,对应观测站就会产生k条数据,漏扫的情况,在思路实现中处理。

2) 同一雷达站内生成的数据,批号相同表示该数据来自同一艘船,即同一批号的数据可唯一代表一艘船的轨迹;

3) 不同雷达站间,生成数据的批号相互独立;

4) 在模型假设 (2) 基础上,同一观测站内,各雷达站对于同一目标扫描到的轨迹有且仅有一条,进而各雷达站所观测到的轨迹仅与另一雷达站中的一条轨迹匹配。

5) 同一观测站内,同一艘船的轨迹唯一,进而各观测站匹配出的轨迹仅与另一观测站中的一条轨迹匹配。

6) 载有传感器的船只在ESM观测范围内,观测站中的ESM就一定有对于该船只的探测数据;

7) 载有传感器的同一艘船经过不同的观测站,各观测站对该船获取到的传感器信息在ESM检测误差范围内相似,载有传感器的不同船只其被观测站检测到的传感器信息在ESM检测误差范围内不相似;

8) 船只驶出雷达站的观测范围,在ESM的观测范围内是匀速行驶的。

Part.3

核心思路

3.1 第一问

考虑到在线匹配时由于获取的信息不全,容易导致错误匹配,生成的轨迹数量也会受到影响,进而观测目标个数不准,所以我们从另一个角度去解决问题一的需求,使得问题一与问题二、三的求解解耦合。

基于计数统计和集合的思想,对每次扫描到的雷达/ESM 数据进行在线获取和处理。

1. 通过雷达数据计算在该观测站所有雷达覆盖范围内的不重复目标个数 7466e64ad9879a7519ed4a7e96630955.png

2. 通过ESM数据与历史雷达数据进行判断比较,得到不在雷达范围内的目标个数 7300f26b53007d04cf6fc69da72f1608.png (同时在雷达范围内的目标不算入 a3a7e4b5d3422b84f1178e0c7d468024.png ) ;

3. 每120s将各观测站的 2c6ed93baf509342601a6a117516a547.png 放入结果。

利用计数统计和集合思想求雷达覆盖范围内的船只个数,其原理图如图1所示。

a07f83f6d6453d757e83dca63eea89d4.png

图1: 计数统计和集合思想的原理图

经过分析,可以得到一个先验信息: 如果一个目标在某一雷达站观测范围内,则雷达站对该目标一定会有一条观测数据 (先不考虑漏扫) ,当该个目标进入同一观测站的多个雷达站的范围,那么相邻时刻,多个雷达站均会有一条该目标的数据。 利用模型假设 (1) ,可以根据目标的位置信息在线计算出观测站k内可以观测到该目标的2D雷达集合 18d9fe72b0562a869426d25fb1022359.png ,并对其计数。 则此时的该观测站内的船只个数为

85d384dc2b1b8f3ffde2514cdf35b664.png

其中 90c9c552c9e5c9485260a511b8829b11.png 表示目前观测站内出现在2D雷达集合 e40cb5f9853f8f7efbc726ffda65111c.png 的观测范围内的数据个数, 421769311bfd63759ca57b638f175629.png 表示雷达站集合中的雷达个数,n表示观测站k中集合的个数;

对于漏扫的情况,由于我们维护的是各雷达站对于某一轨迹的最后一个点的被观测信息 (即被哪几个观测站观测到) ,所以就算有漏扫,对于当前雷达站而言,就认为该目标还是处于上次扫描的位置,对结果的影响不大,再次扫描到时,即时更新其状态即可。

1. ESM数据结合历史雷达数据求不在雷达覆盖范围内的船只个数

通过比较ESM数据点与其观测范围内的其他雷达轨迹中的最后一个点迹比较,判断是否为同一目标; 是,则判定该目标在雷达范围内,无需计数,更新该ESM轨迹目前同时能被雷达观测到; 不是,则判定该目标不在雷达范围内,则需计数为 02881f209b6228f30601d7193c435df0.png ,更新该ESM轨迹目前未被雷达观测到; 判断ESM数据与雷达点迹是否为同一目标,是通过计算该目标位置与观测源ESM的方位 651c78d57279736429489f4fa7a9bcdd.png ,然后与ESM数据中的方位 55298c9a7f09e6743039b78f44b6d8b5.png 求绝对差值 f6e09d36f2e1c5784ff1337dd24da969.png ,当 59cbcbfa537551cfd3d164bd2505e89d.png 时 (其中的E为ESM的方位误差,d为阈值系数) ,则算同一目标。

3.2 第二、三问

对于第二、三问,我们采用分级式的融合算法,该算法的处理步骤如下。

1. 各观测站内实时获取和处理扫描到的雷达数据并暂存ESM数据

分别在各观测站内在线接收和处理获取的雷达数据和ESM数据,并利用在线处理式的双指针轨迹匹配算法来记录匹配信息,然后通过观测站内的匹配率 cb862fe43405b9c32eb4c38b8a58b5e3.png 来筛去阈值以下的匹配项,同时在模型假设 (4) 的约束下,结合匹配信息求得观测站内各轨迹的匹配信息。 雷达接收目标距自身的距离和方位角的同时通过Geopy库的distance方法计算目标的经纬度坐标,该方法使用的是WGS-84模型并利用大地线距离进行计算; 在线式的双指针轨迹匹配算法,在模型假设 (2) 的前提下,对同一批号的轨迹需维护其最后一个轨迹点,记当前时刻获取的雷达数据点为 3113ea76394f642af07f8081f25f006f.png ,将其与约束条件下的其他轨迹的最后一个点 fde497879126b87834a768a52c9760e8.png 进行相似性判断,若 4b39f33ab9aba3caf1f9d6be2baf6e83.pngd0d9f84d191bb1f48af14f931c02391b.png 的邻近门限范围内,则算一次匹配成功; 通过约束,来自雷达站 acd99ac925fc41ca1c6308b6c16e51e8.png 与雷达站 0b76dda1e46eeeab2e63ff0f25c848ee.png 的轨迹点能进行匹配,仅在 62e3336161d426b5b9ded857c8ba16db.png 时,这样可以保证模型不冗余匹配的基础上,提升模型的处理效率。

2. 基于实时维护的匹配信息生成各目标匹配成的单条轨迹

对上一步实时维护得到的匹配信息,通过并查集算法将视为同一艘船的来自不同雷达的轨迹数据信息合并到一个集合; 其中并查集算法使用之前需先将匹配信息中的 (雷达站,批号) 元组进行序列化处理,然后再将相匹配的轨迹通过并查集的合并操作归为一个集合。

3. 对观测站内各轨迹进行一级融合

利用并查集算法的得到的各观测站内轨迹的匹配信息,融合轨迹,其中采用平均融合的方法来融合轨迹点。

4. 对各观测站内融合后的轨迹进一步做观测站间的匹配

得到各观测站匹配、融合后的轨迹,通过观测站间双指针轨迹匹配算法来记录匹配信息,然后通过站间匹配率 0a489b4e782b7a3e6a59079ba848d912.png 来筛去阈值以下的匹配项,同时在模型假设 (5) 的约束下,结合匹配信息求得各观测站间各轨迹的匹配信息。 观测站间双指针匹配算法,是在观测站匹配约束下进行两两轨迹间匹配,匹配时以观测站id编号小的轨迹为基准,设指向基准轨迹的指针为主指针,指向与之匹配轨迹的指针为副指针,在保持副指针所指数据点的时间始终晚于主指针所指数据点的状态下,每次将两指针分别移动到相邻时刻的数据点,进行相似性判断,如果匹配成功,则对两轨迹点所属的轨迹标签进行计数; 经过对数据集可视化分析,在匹配时考虑到有的轨迹跨越两观测站的边缘,但没有时间上相邻的数据点,所以需对时间晚的轨迹进行外推预测,进而使可能属于一艘船的两观测站轨迹进行匹配; 由于观测站间共同视野的轨迹点数相比观测站内的要少,同时不同观测站间也存在系统观测误差,为了减小上述影响,设置的站间匹配率可以根据可视化的结果适当下调。 观测站匹配约束即,属于观测站 59d14387cae2d48d0921ac3cd393085f.png 的轨迹仅与属于观测站 06ec5ead167b97778ad7fa90e8961e3b.png 的轨迹匹配,当且仅当 bbee0620a53095b63b8c2242f7b71f38.png 。 观测站间匹配算法的原理图如图2所示意。

87d3536d1858ff40862533237edb7381.png

图2: 观测站间匹配算法的原理图

基于观测站间匹配得到的信息,复用并查集算法将视为同一艘船的来自不同观测站的轨迹数据信息合并到一个集合;  

5. 对观测站间匹配完的数据进行二级融合

基于观测站间匹配得到的信息,利用平均融合的方法进行二级融合,同时合并入观测源的标签信息。

6. 基于各观测站间融合后的轨迹,用ESM轨迹与之匹配

基于上游得到的各观测站匹配、融合后的轨迹,利用各ESM同一批号 (batchnum) 的数据 (后文将同一批号的ESM数据称作ESM轨迹) 与这些雷达轨迹匹配。 匹配时利用双指针的思想,即以ESM轨迹为基准,设指向ESM轨迹的指针为主指针,指向与之匹配轨迹的指针为副指针,在保持副指针所指数据点的时间始终晚于主指针所指数据点的状态下,每次将两指针分别移动到相邻时刻的数据点进行匹配判断,如果匹配成功,则对两轨迹点所属的轨迹标签进行计数; ESM数据点与雷达数据点间的匹配判断,可以先计算雷达数据点到ESM之间的方位角度 11f33efc53892ff7e87bf3bde04105c4.png ,再与ESM数据中的观测角度 c851baba1ab9b5c77e19dcf5ddaab2fa.png 求绝对差值 2cc371a0dfe4c8cd278f83be65857b2f.png ,当 7d0a25eb092b7a95313b79de8de6c50b.png 时 (其中的E为ESM的方位误差,d为阈值系数) ,则算成功匹配。 ESM 与 轨迹匹配的原理图如图3所示。

b8a8be7791889d2360b1aa044a4bb233.png

图3: ESM 与 轨迹匹配的原理图

根据模型假设 (3) 进一步筛选掉不符合逻辑的匹配计数变量,然后对于每条ESM轨迹,选取与之成功关联点对数最多的雷达轨迹算作匹配成功。

7. 基于传感器参数特性,进行ESM轨迹间匹配

经过对场景和ESM数据属性的分析,在模型假设 (4) 的条件下,判断各ESM轨迹数据间的传感器参数在ESM检测误差范围内是否相似,多条ESM轨迹通过并查集算法匹配为一个集合。 相应的对于各ESM轨迹匹配上的雷达轨迹,默认也匹配到了起来。

8. 结合ESM数据匹配完后进行第三级融合

ESM间的轨迹匹配完后,在成功匹配的ESM轨迹集合中,将ESM轨迹与它们匹配上的雷达轨迹进行融合,对于同一时刻有多个观测源数据时,对经纬度信息进行平均融合,同时合并观测源的标签信息到数据点上; 当某个时刻有ESM数据但没有雷达数据时,需要根据相邻的轨迹点坐标进行插值处理; 当雷达轨迹结束,但仍有ESM数据时,需要在模型假设 (5) 的前提下,对带有传感器的船只轨迹用线性趋势外推法进行预测,同时并入ESM的标签信息。

Part.4

评测分析

4.1 效果方面

在本次竞赛中我们对于三问分别尝试了多种解决思路和实现方法。 由于复赛仅有一次提交结果,我们以初赛中不同求解方案对应的在线分数作为算法提升分析的依据。

在求解第一问的过程中,我们最初尝试过对时间段内点迹使用基于密度的聚类算法,但对于一些船只密集的地方聚类效果不好,成了该方法的瓶颈。 经过对场景的分析,我们最后提出了基于计数统计与集合思想的方法,线上分数从 0.4401跃升到了0.47644。

在求解第二、三问的过程中,我们初期的方法中包括基于密度的聚类匹配算法、全局式融合算法、仅基于匹配点数做轨迹配对和不加预测的匹配,对这些方法迭代过后,提出了分级式融合算法,加入了匹配率、观测站间匹配前的预测机制和根据雷达数据做外推预测的机制,均有明显的效果提升,分数变化如表1所示。

表1: 方法迭代在线分数表

方法迭代

Score2

Score3

基于密度的聚类匹配算法

0.02459

0.06921

全局式的融合算法

0.05241

0.36601

分级式的融合算法

0.05467

0.36601

加入匹配率

0.06627

0.67154

加入预测的匹配

0.07534

0.68111

加入外推预测

0.07534

0.96466

上表中,转换为分级式融合算法后,载有传感器目标的轨迹未受影响,所以第三问分数无变化; 外推预测机制用于第三问结合ESM和雷达数据做轨迹外推,初赛阶段未将其结果合并至第二问,所以第二问的分数无变化。

在初赛阶段,我们最终三问的成绩分别是 0.047644、0.07534 和 0.096466,排名4/267; 复赛阶段,我们三问最终的成绩分别是 0.4659、0.8013 和0.3333,排名1/30; 其中第三问与前五其他队伍持平; 第二问成绩是前五其他队伍近两倍的分数 (除该问次高分0.5982) ; 经分析,复赛第二问成绩显著有两点原因,首先,我们将分级式的融合算法的参数进行更合理的设置,提高了模型对观测站间轨迹匹配的效果,更具鲁棒性。 其次,在初赛阶段,我们未将二、三问的结果整合输出,导致第二问结果中载有传感器的船只轨迹不完整,在复赛阶段,我们作出了调整,所以第二问效果会更好。

初赛第三问融合后的轨迹可视化如图4所示。 复赛的第三问轨迹融合结果如图5所示。

84db7d9607b257df2944cab8a5af1b10.png

图4: 融合后的轨迹可视化图

86a0310d28f36f8bea2ddd6bbb597c90.png

图5: 复赛的第三问轨迹融合结果

4.2 效率方面

本次比赛中所有工作在一台本地主机上进行,主机CPU为i7-11800H处理器,16G内存,系统环境为Windows 10 版本21H2。 有限的计算资源下,模型在含有45万条2D雷达数据、近6千条ESM数据的复赛数据集上,整体运行时间稳定在5分钟左右。

第二、三问,模型中采用分级式的融合处理流程,从观测站内到观测站间逐级处理,相比于全局式的融合算法,处理数据的流程设计更加合理和高效。 模型中第一问的求解与二、三问的求解是解耦合的,可以独立计算结果,并行优化后预期的整体运行时间可缩短一半。

Part.5

总结

在本文中,我们从赛题难点展开,提出了比赛中较为棘手的几个关键问题,并给了相应的解决思路。 之后在问题场景的基础上提出了模型的假设。 然后较为详细的介绍了模型的核心思路。 最后,从模型测评结果的角度来分析和解释我们模型,充分说明了我们模型的有效性。

致谢

经过近两个月的竞赛历程,我们收获颇多,面对难题时苦思,头脑风暴时的激情,攻破难点时的喜悦,最后都化作我们成长路上宝贵的财富。 而这次比赛能够顺利进行,离不开实验室的导师和同门的支持和帮助。

在此十分感谢刘秀磊导师为我们提供了这次竞赛机会,刘导在比赛最艰难的时期,给了我们很大的鼓励,去攻克难关。 十分感谢佟强导师,佟导全程给我们密切的指导,总能带我们从更高视角去认识问题和分析问题。 非常感谢罗迩遐学妹,在我们需要人手时,积极参与到决赛材料准备的工作中。 感谢陈玉立师兄、沈嘉豪师兄以及实验室其他同门们的帮助和支持。 感谢赛方和平台,提供了如此有趣而富有挑战性的赛题,赛方的指导老师们都十分和蔼可亲。

最后也非常感谢团队里的每一人,大家都很努力的去应对这次挑战,也取得了不错的成绩。

参考

[1] 翟玉健,余承智,高星.一种基于DBSCAN聚类的雷达点迹处理方法[J].舰船电子对抗,2021,44(05):58-61.DOI:10.16426/j.cnki.jcdzdk.2021.05.012

[2]  穆荣军,崔乃刚.多传感器分层多级变结构组合导航信息融合方法[J].上海航天,2007(01):6-11.DOI:10.19328/j.cnki.1006-1630.2007.01.002.

[3] 陈静,王虹,袁冠杰,程田莉.基于卡尔曼滤波的多传感器时间配准方法[J].微波学报,2021,37(S1):237-240.

[4] 田明辉,方青,任清安.机载ESM与雷达航迹融合仿真系统研究[J].雷达科学与技术,2012,10(01):64-70.

[5] 王国宏,何友.雷达与ESM相关算法综述[J].上海航天,1996(02):38-42+47.DOI:10.19328/j.cnki.1006-1630.1996.02.008.

—End—

 
 

af1f43fd9993c8aa622cbad849ea0435.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
航迹关联是指将雷达数据、AIS数据和ADS-B数据等多源数据融合起来,确定每一架飞机的航迹信息。一般来说,航迹关联的代码分为两个部分:数据处理和关联算法。下面是一个简单的示例代码,供您参考。 数据处理部分: ```python # 假设雷达数据、AIS数据和ADS-B数据分别存储在三个文件中,每个文件包含多行数据,每行数据表示一条记录 import pandas as pd # 读取雷达数据 radar_data = pd.read_csv('radar_data.csv', header=None, names=['time', 'id', 'latitude', 'longitude', 'altitude']) # 读取AIS数据 ais_data = pd.read_csv('ais_data.csv', header=None, names=['time', 'id', 'latitude', 'longitude', 'speed', 'course']) # 读取ADS-B数据 adsb_data = pd.read_csv('adsb_data.csv', header=None, names=['time', 'id', 'latitude', 'longitude', 'altitude', 'speed', 'course']) # 将三个数据集合并成一个数据集 data = pd.concat([radar_data, ais_data, adsb_data], axis=0, ignore_index=True) # 对数据按时间进行排序 data = data.sort_values(by='time') # 将重复的记录删除 data = data.drop_duplicates(subset=['time', 'id']) ``` 关联算法部分: ```python # 定义一个函数,用于计算两个坐标点之间的距离 from math import radians, cos, sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): """ Calculate the great circle distance between two points on the earth (specified in decimal degrees) """ # 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine公式 dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # 地球平均半径,单位为公里 return c * r # 定义一个函数,用于判断两个坐标点是否在同一位置 def is_same_location(lon1, lat1, lon2, lat2): return haversine(lon1, lat1, lon2, lat2) < 0.1 # 假设两个点距离小于100米则视为同一位置 # 定义一个函数,用于关联两个数据记录 def associate_records(record1, record2): if record1['id'] != record2['id']: return False if not is_same_location(record1['longitude'], record1['latitude'], record2['longitude'], record2['latitude']): return False if abs(record1['time'] - record2['time']) > 5: # 假设两个记录的时间戳相差不超过5秒,则认为是同一记录 return False return True # 定义一个函数,用于关联所有数据记录 def associate_data(data): groups = [] # 用于保存所有关联的记录组 for i in range(len(data)): group = [data.iloc[i]] for j in range(i+1, len(data)): if associate_records(data.iloc[i], data.iloc[j]): group.append(data.iloc[j]) if len(group) > 1: groups.append(group) return groups # 调用关联函数,输出所有关联的记录组 groups = associate_data(data) for group in groups: print(group) ``` 上述代码仅为示例代码,没有考虑到实际应用中可能出现的各种情况,仅供参考。在实际应用中,需要根据具体情况对代码进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值