吕腾达,刘 成
(1.中国科学院 国家空间科学中心,北京100190;2.中国科学院大学 北京100190)
探空火箭振动遥测数据压缩算法设计
吕腾达1,2,刘 成1
(1.中国科学院 国家空间科学中心,北京100190;2.中国科学院大学 北京100190)
目前探空火箭遥测数据下传链路带宽资源有限,振动采样数据量大、信源冗余度高。分析振动数据得知其分布特点为:整体相对稳定、局部波动较大。为减少探空火箭振动采样下传数据量,设计了基于动态哈夫曼编码的振动数据压缩方法,实现了对振动数据的无损压缩,压缩率达到20%左右,各数据包编解码树相互独立,丢包不破坏后续数据包解压。通过对比实验表明该方法压缩效率优于基于字典的LZW编码算法。
探空火箭;振动数据;数据压缩;动态哈夫曼编码
目前探空火箭的遥测数据链路带宽资源有限,振动采样遥测数据未经压缩直接下传地面,导致带宽资源得不到充分利用。用于实时监测火箭飞行状态的振动采样数据具有采样频率高,单位时间下传数据量大,信息冗余大等问题。为保持振动采样的频率和精度不变,减少下传数据量,分析了探空火箭的振动数据概率分布不均匀的统计特性和采样数据序列有大量重复的特点,结合CCSDS协议标准的数据包大小固定的特点,提出了基于动态哈夫曼编码的数据包独立编/解码的方法,该方法适用于数据波动特点为:整体相对稳定,局部波动较大的采样数据的压缩。通过对比基于动态哈夫曼编码的压缩算法和基于字典的LZW编码压缩算法,实验表明该方法具有较高的压缩效率,发生丢包后不破坏后续数据包解压等特点。
在探空火箭飞行过程中,振动情况整体相对稳定,采样值波动在几个固定的振动量之间。当探空火箭进行如伸杆展开、头体分离等动作时,振动量会出现较大波动,但波动时间较短。振动数据整体分布情况具有“长期稳定,短期波动”的特点。以下针对探空火箭的振动数据分布特点,分析了探空火箭振动采样数据的概率分布特性和采样序列排列特性。
1.1振动数据概率分布特性
通过分析探空火箭飞行过程中的振动量波动情况,其飞行过程可分平稳段和波动段。波动段主要包括探空火箭发生动作的时间段如头体分离、伸杆展开、头罩分离等动作期间,在波动段时间内振动量波动范围较大,但持续时间短。在平稳段时间内振动波动范围较小,但占据了飞行过程的绝大多数时间。通过分析以往探空火箭飞行过程的振动数据记录,得到结论如下:在探空火箭飞行过程中95%以上的时间,振动量相对稳定在几个固定的振动量内,具有短时间内稳定的特点;在飞行过程中小于5%的时间内,振动量波动范围较大。所以探空火箭振动量有明显的概率分布不均匀现象,概率分布如图1,具有较高的信源冗余度。计算探空火箭振动数据的信源冗余度为:
其中M为信源中符号个数,1b x=log2x,P(x)为信源中符号x的概率值。因此探空火箭振动数据信源冗余度在平稳段为R=86.76%,在波动段冗为R=42.90%。在平稳段压缩空间大,在波动段压缩空间小。
图1 振动量概率分布图
1.2振动量采样序列周期性
通过观察以往探空火箭飞行过程中的振动数据分布情况,可知探空火箭在振动平稳段,振动量大多波动在某固定值上下,具有一定的周期性,经常出现振动采样连续几次保持不变或者几个采样值周期性交替出现,示例如下:
①AAAAAAAA或者②ABABABAB
其中A、B代表不同大小的振动量,①代表某采样值连续几次保持不变,②代表两个采样值周期性交替出现。此外还有其他采样值周期性交替出现的情况,即探空火箭的振动采样数据存在大量重复的数据序列。
根据上述分析可得,探空火箭振动量具有以下特性:①明显的概率分布不均匀特点。有95%以上的振动采样数据分布在某固定左右,信息熵冗余较大;②采样序列大量重复的特点。在振动相对平稳时,振动采样数据波动具有一定周期性,存在大量重复的采样序列。
本节结合了振动遥测数据的分布特性,其概率分布特点为在95%的采样数据波动较平缓,不足5%的采样数据波动较大,算法编码部分采用哈夫曼编码。设计了遥测数据包结构和压缩算法流程。实现了对探空火箭的振动遥测数据的无损压缩。采用数据包独立编解码的方法,避免了丢包对后续数据包的影响。
2.1振动遥测数据编码方式
根据信息熵原理,可以把数据中出现频率大的码元用小的码元长度表示,即占用比较少的比特数;把数据中出现概率小的码元用大的码元长度表示,即占用较大的比特数,这样能大大地压缩数据量[1]。哈夫曼编码需要两次遍历数据能够实现对原始数据的压缩编码,通过第一次遍历统计各字符出现的概率,构建哈夫曼树,用比特数小的码元表示出现概率高的字符,用比特数大的码元表示出现概率小的字符,第二次遍历实现对数据的压缩编码。
在探空火箭飞行任务中为实时监测火箭振动情况,需要实时下传振动数据,这表示不能够先对振动数据进行概率统计然后进行编码。本文的数据编码算法采用动态哈夫曼编码,克服了传统哈夫曼编码需要对原始数据进行二次遍历的缺点,不需要统计数据的概率分布,可以在采样的同时进行编码,提高了编码的实时性,而且压缩效率与传统哈夫曼编码相当,甚至优于传统哈夫曼编码[2-4]。
2.2振动遥测数据包结构设计
探空火箭各振动点每个采样数据分x轴、y轴和z轴3个分量,由于各方向的采样精度不同位数不同,概率分布特性不同。本算法对3个分量的编码独立进行,即对每个分量的编解码建立相互独立的编码树。每次采样完成后,分别按各自分量的编码树进行编码,然后将编码按照xyz顺序存入数据包中,当数据包剩余空间的位数小于本次编码的位数时,将本次编码存入下一个数据包。
图2 振动遥测数据包结构
探空火箭数据下传系统采用符合CCSDS标准的遥测源包格式,该标准规定了数据段大小固定不变。本算法定义的振动遥测数据包结构如图2所示。第一部分为数据包头,包含了时间码、数据类型、通道序号等数据包详细信息;第二部分为采样次数n,标记了第3部分包含的采样数据的个数,每次采样包含x、y和z 3个分量,由于哈夫曼编码属于不定长编码,采样次数n避免了在解码时第4部分(空闲位)参与解码。第3部分为数据包的n次振动采样数据,从低位到高位按时间顺序排列;第4部分为空闲位,由于哈夫曼编码属于不定长编码,在当前数据包的空余位不足以保存下一次编码的数据时,空闲位保持不变,将本次采样的编码数据存入下一个数据包中。
2.3振动遥测数据压缩算法流程
数据传输过程中不可避免地会产生丢包现象,为防止数据丢包破坏后续数据的解压缩产生错误的数据,本算法采用数据包独立编/解码的方法。
振动数据压缩算法具体执行步骤如下:
步骤1:初始化数据包填充包头新信息,如时间码,数据类型等信息,初始化动态哈夫曼编码树;
步骤2:读入一组振动数据并进行动态哈夫曼编码,更新哈夫曼树;
步骤3:比较当前数据包剩余bit位数与本次编码bit位数大小关系,如果大于等于则把本次编码按照xyx顺序装入数据包,返回到步骤2。如果小于则当前数据包完成填充,本次读入的振动数据参与下个数据包的编码。
步骤4:判断编码是否完成,如果没有完成则返回到步骤1。如果完成则结束程序。
解码时,对每一个数据包进行独立的动态哈夫曼解码,即解码树相互独立调整。
数据包独立编解码在每次生成新的数据包时,重新初始化动态哈夫曼树,确保每个数据包之间的数据的独立性,防止因为数据丢包引起的后续数据错误的解码。
图3 振动数据压缩算法流程图
根据振动数据的两个特性,在本文的算法设计压缩编码部分分别采用两种编码方式,动态哈夫曼编码和基于字典的LZW压缩算法[5]。考虑CCSDS标准遥测源包格式中数据域大小固定不变,我们分别用以上两种算法对振动数据进行编码,使压缩数据量大小为400字节左右,经过多次试验,记录其压缩率求平均,两种算法压缩比比较结果如表1。
表1 动态哈夫曼编码与LZW编码压缩性能比较
对比两种压缩算法的压缩率,无论在振动平稳阶段还是在振动波动阶段,动态哈夫曼编码算法的压缩效率均明显高于LZW编码。动态哈夫曼编码算法的综合压缩率为19.01%,明显优于基于LZW算法压缩效率。动态哈夫曼编码在压缩效率方面,比LZW编码更适合应用于探空火箭的振动数据压缩。
此外本算法还具有丢包不破坏后续数据包解码的特点。动态哈夫曼编解码算法简洁,大大提高了压缩速度,提高了系统的实时性[6]。
文中分析了探空火箭振动数据的概率分布不均匀和振动量采样序列大量重复的特点,针对两个特点分别设计了基于动态哈夫曼编码和基于LZW编码的方法,通过对两种算法的压缩性能进行分析比较,表明基于动态哈夫曼编码的算法具有较好的压缩效率。提出了数据包独立编解码的方法,避免了丢包对数据解压的影响,提高了系统的稳定性。
[1]刘新,潘振宽,于建.基于信息熵编码的改进图像编码方法研究[J].信息技术与信息化,2006(1):108-110.
[2]Jeffrey Scott Vitter.Design and analysis of dynamic huffman codes[J].Journal of the Association for Computing Machinery,1987,34(4):825-845.
[3]方敏,秦晓新,刘本喜.动态哈夫曼编码的数据压缩方法[J].计算机世界,1994(7):29-33.
[4]朱怀宏,吴楠,夏黎春.利用优化哈夫曼编码进行数据压缩的探索[J].微机发展,2002(5):1-6.
[5]杨国梁,张光年.无损LZW压缩算法及实现[J].首都师范大学学报;自然科学版,2004(S1):11-13,17.
[6]李晓飞.Huffman编解码及其快速算法研究[J].现代电子技术,2009(21):102-104,108.
Design of sounding rocket telemetry vibration data compression algorithm
LV Teng-da1,2,LIU Cheng1
(1.National Space Science Center,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100190,China)
The sounding rocket telemetry downlink has limited bandwidth,while the amount of vibration sampling data with much redundancy is very large.By analyzing the vibration data we geta conclusion that:the vibration fluctuation is generally stable and seldom has large fluctuation.In order to reduce the amount of vibration data of sounding rocket,we designed a compression method based on dynamic Huffman encoding,achieving the lossless compression of vibration data,and the compression rate reached 20%.Each data packet is encoded independently,so when a packetmissed other data packet's decodingwillnotbe affected.By comparing,it truns that the proposedmethod isbetter than the LZW based coding algorithm.
sounding rocket;vibration data;data compression;dynamic Huffman encoding
TN99
A
1674-6236(2016)19-0028-03
2015-09-06稿件编号:201509040
吕腾达(1989—),男,河北邢台人,硕士。研究方向:图像及信号处理。