欢迎光临散文网 会员登陆 & 注册

迭代制导真空单级定点着陆原理【2】

2023-08-12 17:36 作者:咆哮鼠啊啊啊  | 我要投稿

前言

这是一个介绍迭代制导真空单级定点着陆的系列文章

第0篇以最简的形式只介绍了计算公式与流程,不需要懂任何原理就可以复现

第1篇介绍了使用最优控制求解大量简化的定点着陆问题,得到了含未知常数的姿态角解

我不是自动化或者航天相关专业的,全靠听过几节现代控制论的网课读懂论文加以复现,不保证正确,如有错误还请指正


物理量

【1】

%5Cmu 引力常量(引力常数G与星球质量M的乘积)

T 最大推力

V_e 喷气速度(单位m/s1s比冲等于9.81m/s喷气速度)

%5Cdot%7Bm%7D 燃料质量消耗速率(%5Cdot%7Bm%7D%3DT%2FV_e

%5Clambda_%7B*0%7D 与时间无关的积分常数(*取x,vx,y,vy,z,vz)

【2】

t 以当前时间为0的时间

t_%7Bgo%7D 剩余飞行时间

%5Cvec%7BR%7D_f%2CX_f%2CY_f%2CZ_f 设定的终端位置

%5Cvec%7BV%7D_f%2CV_%7Bfx%7D%2CV_%7Bfy%7D%2CV_%7Bfz%7D 设定的终端速度

%5Cvec%7BR%7D%2CX%2CY%2CZ 当前位置(t=0)

%5Cvec%7BV%7D%2CV_x%2CV_y%2CV_z 当前速度(t=0)

M 当前质量(t=0)

%5Cvec%7Br%7D(t)%2C%5Cvec%7Bv%7D(t)%2Cm(t)位置、速度、质量关于时间的函数

%5CDelta%20%5Cvec%7BV%7D_t%2C%5CDelta%20%5Cvec%7BR%7D_t  推力产生的总速度增量、位移增量

%5CDelta%20%5Cvec%7BV%7D_g%2C%5CDelta%20%5Cvec%7BR%7D_g 引力产生的总速度增量、位移增量

%5CDelta%5Cvec%7BR%7D_c 滑行位移增量

%5CDelta%20%5Cvec%7Bv%7D_t(t)%2C%5CDelta%20%5Cvec%7Bv%7D_t(t) 推力的速度、位移增量关于时间的函数

%5CDelta%20%5Cvec%7Bv%7D_g(t)%2C%5CDelta%5Cvec%7Br%7D_g(t) 引力的速度、位移增量关于时间的函数

【3】

%5Cvarphi_v%2C%5Cpsi_v 只满足终点速度约束的姿态角

%5Cvarphi_c%2C%5Cpsi_c 上篇最优控制问题求解出的姿态角(满足终端速度约束与两个方向的位置约束)

姿态角补充

推力的方向矢量%5Cvec%7Bu%7D向xy平面做投影%5Cvec%7Bu%7D_%7Bxy%7D

%5Cpsi是从%5Cvec%7Bu%7D_%7Bxy%7D%5Cvec%7Bu%7D的夹角,以向z轴正方向为负

%5Cvarphi是从x轴到%5Cvec%7Bu%7D_%7Bxy%7D的夹角,以向y轴正方向为正

哈哈嗨,还是我嗷,别和一般的俯仰角偏航角搞混



定点着陆

定点着陆指的是,已知火箭的初始位置%5Cvec%7Br%7D和速度%5Cvec%7Bv%7D(或者已知轨道的六根数),通过调整推力的大小和方向,使飞船在推力和重力的共同作用下,达到设定的最终位置%5Cvec%7BR%7D_f和速度%5Cvec%7BV%7D_f。这里我们先不考虑星球自转的问题,它会让问题变得复杂

除此之外,在现实(坎巴拉)情境中,定点着陆还有一些性质可以用来简化问题

    · 火箭最终的着陆过程需要将竖直方向速度削减到固定的数值,因此终端推重比要大于1

    · 只有轨道飞掠目标着陆点上方才可能实现着陆,因此设定的落点与轨道平面要足够近

到这我们先建立一个坐标系

    · 坐标原点O在星球中心

    · OY指向终端位置

    · OX在轨道平面内,与OY垂直,与火箭飞行速度同向

    · OZ垂直于轨道平面

依然是这张图

有了坐标系的规定和以上几个条件的限定,我们可以把上篇最后得到的姿态角公式

%5Cbegin%7Balign%7D%0A%5Ctan%5Cvarphi_c%26%3D%5Cfrac%7B%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt%7D%7B%5Clambda_%7Bvx0%7D%7D%20%5C%5C%0A%5Ctan%5Cpsi_c%26%3D%5Cfrac%7B%5Clambda_%7Bvz%7D-%5Clambda_%7Bz0%7Dt%7D%7B%5Clambda_%7Bvx0%7D%5Ccos%5Cvarphi_c%2B(%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt)%5Csin%5Cvarphi_c%7D%0A%5Cend%7Balign%7D

近似简化为

%5Cbegin%7Balign%7D%0A%5Cvarphi_c%20%26%3D%20%5Cvarphi_v-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt%20%5C%5C%0A%5Cpsi_c%20%26%3D%20%5Cpsi_v-k_%7B%5Cpsi1%7D%2Bk_%7B%5Cpsi2%7Dt%0A%5Cend%7Balign%7D

我没看懂到底是如何简化的,参考资料里也没详细说,暂且接受它吧。这里的%5Cvarphi_v%2C%5Cpsi_v是仅满足速度约束的最优化问题的姿态角,四个k是修正小量,不出意外的话要比%5Cvarphi_v%2C%5Cpsi_v小至少一个数量级

%5Cbegin%7Balign%7D%0A%5Cvarphi_v%20%26%3D%20%5Carctan%5Cfrac%7B%5CDelta%20V_%7Bty%7D%7D%7B%5CDelta%20V_%7Btx%7D%7D%20%5C%5C%0A%5Cpsi_v%20%26%3D%20-%5Carcsin%5Cfrac%7B%5CDelta%20V_%7Btz%7D%7D%7B%7C%7C%5CDelta%5Cvec%7BV%7D_t%7C%7C%7D%0A%5Cend%7Balign%7D

除此之外,姿态角的变化率很低,对飞船姿控系统的要求不高,可以不用考虑火箭的转动惯量导致的姿态跟随困难的问题



得考虑引力了

上篇文章我们一直是在没有引力的自由空间内做的分析,但到了定点着陆不可能不考虑引力的问题了

根据微积分的线性特性,我们可以把火箭变化的位置和速度分成三个分量:滑行、推力、引力,也就是

%5Cbegin%7Balign%7D%0A%5Cvec%7BV%7D_f%26%3D%5Cvec%7BV%7D%2B%5CDelta%20%5Cvec%7BV%7D_t%2B%5CDelta%20%5Cvec%7BV%7D_%7Bg%7D%20%5C%5C%0A%5Cvec%7BR%7D_f%26%3D%5Cvec%7BR%7D%2B%5CDelta%20%5Cvec%7BR%7D_%7Bc%7D%2B%5CDelta%20%5Cvec%7BR%7D_%7Bt%7D%2B%5CDelta%20%5Cvec%7BR%7D_%7Bg%7D%0A%5Cend%7Balign%7D(1)

这里下标t表示推力项(thrust),下标g表示引力项(gravity),下标c表示滑行项(coast)

也许你看到这里会立刻意识到,只要我算出引力项,然后移到等号左边,重新构建起“等效的”终端位置和速度,不就可以直接套用无引力的条件了吗

%5Cbegin%7Balign%7D%0A%5CDelta%20%5Cvec%7Bv%7D_%7Bg%7D(t)%26%3D%5Cint_0%5E%7Bt%7D-%5Cfrac%7B%5Cmu%5Cvec%7Br%7D(t)%7D%7B%7C%7C%5Cvec%7Br%7D(t)%7C%7C%5E3%7Ddt%20%5C%5C%0A%5CDelta%20%5Cvec%7Br%7D_%7Bg%7D(t)%26%3D%5Cint_0%5E%7Bt%7D%5CDelta%20%5Cvec%7Bv%7D_%7Bg%7D(t)dt%20%5C%5C%0A%5CDelta%5Cvec%7BV%7D_g%26%3D%5CDelta%5Cvec%7Bv%7D_g(t_%7Bgo%7D)%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D-%5Cfrac%7B%5Cmu%5Cvec%7Br%7D(t)%7D%7B%7C%7C%5Cvec%7Br%7D(t)%7C%7C%5E3%7Ddt%5C%5C%0A%5CDelta%5Cvec%7BR%7D_g%26%3D%5CDelta%5Cvec%7Br%7D_g(t_%7Bgo%7D)%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5CDelta%20%5Cvec%7Bv%7D_%7Bg%7D(t)dt%5C%5C%0A%5Cend%7Balign%7D

但是你紧接着就会发现,积分号内位置函数%5Cvec%7Br%7D(t)是未知的,如果要求出它,就得求出其中的引力项%5CDelta%20%5Cvec%7Br%7D_%7Bg%7D(t),而求出这一项,又得求速度的引力项%5CDelta%20%5Cvec%7Bv%7D_%7Bg%7D(t),一个逻辑上的套娃就出来了

怎么解决这个问题呢,我们做一个野蛮近似,假设从当前到制导结束的引力作用效果等效于一个常矢量

%5Cvec%7Bg%7D_m%3D%5Cfrac%7B1%7D%7B2%7D(%5Cvec%7Bg%7D%2B%5Cvec%7Bg%7D_f)%3D%5Cfrac%7B1%7D%7B2%7D(-%5Cfrac%7B%5Cmu%5Cvec%7BR%7D%7D%7B%7C%7C%5Cvec%7BR%7D%5E3%7C%7C%7D-%5Cfrac%7B%5Cmu%5Cvec%7BR%7D_f%7D%7B%7C%7C%5Cvec%7BR%7D_f%7C%7C%5E3%7D)

这只是对当前与终端重力加速度做了一个非常野蛮的平均,肯定会引入误差,但是你会发现,当逐渐靠近着陆点时,误差会逐步减少

上面的积分项和滑行项就变成了

%5Cbegin%7Balign%7D%0A%5CDelta%20%5Cvec%7BV%7D_%7Bg%7D%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cvec%7Bg%7D_mdt%3D%5Cvec%7Bg%7D_mt_%7Bgo%7D%20%5C%5C%0A%5CDelta%20%5Cvec%7BR%7D_%7Bg%7D%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cvec%7Bg%7D_mtdt%3D%5Cfrac%7B1%7D%7B2%7D%5Cvec%7Bg%7D_mt_%7Bgo%7D%5E2%5C%5C%0A%5CDelta%20%5Cvec%7BR%7D_%7Bc%7D%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cvec%7BV%7Ddt%3D%5Cvec%7BV%7Dt_%7Bgo%7D%0A%5Cend%7Balign%7D(2)

解决了引力的问题我们继续解决下一个问题

眼睛累了就看看远方的星野吧


积分上限是未知的

不要忘了上篇计算出的姿态角公式里还保留着一堆未知常数,计算它们的过程不可避免地要反复做积分,但积分上限t_%7Bgo%7D现在是未知的,这是不行的,我们得算一下

这里要引入一下齐奥尔科夫斯基公式

dv%3DV_e%5Cln%5Cfrac%7BM%7D%7Bm(t_%7Bgo%7D)%7D%3DV_e%5Cln%5Cfrac%7BM%7D%7BM-%5Cdot%7Bm%7Dt_%7Bgo%7D%7D

这里让对数里的分数线上下都除以燃料消耗率%5Cdot%7Bm%7D,能得到

%5Cbegin%7Balign%7D%0Adv%26%3DV_e%5Cln%5Cfrac%7B%5Ctau%7D%7B%5Ctau-t_%7Bgo%7D%7D%20%5C%5C%0At_%7Bgo%7D%26%3D%5Ctau%5Cleft%5B1-%5Cexp(-%5Cfrac%7Bdv%7D%7BV_e%7D)%5Cright%5D%0A%5Cend%7Balign%7D


那么dv是不是%7C%7C%5CDelta%20%5Cvec%7BV%7D_t%7C%7C呢?严格来说不是的。齐奥尔科夫斯基公式在推导的过程中要求推力是朝一个固定方向,所以只有姿态角保持%5Cvarphi_v%2C%5Cpsi_v时,才有dv%3D%7C%7C%5CDelta%5Cvec%7BV%7D_t%7C%7C。不过前面提到,简化姿态角公式里的k是小量,这里可以野蛮近似认为dv%5Capprox%7C%7C%5CDelta%5Cvec%7BV%7D_t%7C%7C

我们把公式(1)的第一行修改一下,和刚刚得到的t_%7Bgo%7D函数放在一起

%5Cbegin%7Balign%7D%0At_%7Bgo%7D%20%26%3D%20%5Ctau%5B1-%5Cexp(-%5Cfrac%7B%7C%7C%5CDelta%20%5Cvec%7BV%7D_t%7C%7C%7D%7BV_e%7D)%5D%20%5C%5C%0A%5CDelta%5Cvec%7BV%7D_t%20%26%3D%20%5Cvec%7BV%7D_f-%5Cvec%7BV%7D-%5Cvec%7Bg%7D_mt_%7Bgo%7D%0A%5Cend%7Balign%7D

这里的计算依然是套娃的,但是相比上面的套娃,这里的套娃要简单得多,所以我们可以先预估一个t_%7Bgo%7D的值,然后用这个t_%7Bgo%7D计算%5CDelta%20%5Cvec%7BV%7D_t,再用这个%5CDelta%20%5Cvec%7BV%7D_t计算t_%7Bgo%7D,不断迭代这个过程,让t_%7Bgo%7D收敛到足够的精度,同时也得到了精度足够高的%5CDelta%20%5Cvec%7BV%7D_t这个迭代方法和不动点迭代非常相似,有兴趣的朋友可以去了解了解


该到你了,推力项

前面的所有计算过程都是在公式(1)的基础上算引力项、t_%7Bgo%7D,%5CDelta%20%5Cvec%7BV%7D_t的具体数值,我们先把刚才的结果放在那,回到描述加速度、速度、位置之间的积分关系来,也就是

%5Cbegin%7Balign%7D%0A%5CDelta%5Cvec%7Bv%7D_t(t)%26%3D%5Cint_0%5E%7Bt%7D%5Cfrac%7BT%5Cvec%7Bu%7D(t)%7D%7Bm(t)%7Ddt%20%5C%5C%0A%5CDelta%5Cvec%7Br%7D_t(t)%26%3D%5Cint_0%5E%7Bt%7D%5CDelta%5Cvec%7Bv%7D_t(t)dt%5C%5C%0A%5CDelta%5Cvec%7BV%7D_t%26%3D%5CDelta%5Cvec%7Bv%7D_t(t_%7Bgo%7D)%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cfrac%7BT%5Cvec%7Bu%7D(t)%7D%7Bm(t)%7Ddt%5C%5C%0A%5CDelta%5Cvec%7BR%7D_t%26%3D%5CDelta%5Cvec%7Br%7D_t(t_%7Bgo%7D)%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5CDelta%5Cvec%7Bv%7D_t(t)dt%5C%5C%0A%5Cend%7Balign%7D

这里先把速度变换一下并上下同时除以%5Cdot%7Bm%7DT%3DV_e%5Cdot%7Bm%7D

%5Cbegin%7Balign%7D%0A%5CDelta%5Cvec%7BV%7D_t%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cfrac%7BT%5Cvec%7Bu%7D(t)%7D%7BM-%5Cdot%7Bm%7Dt%7Ddt%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cfrac%7BV_e%5Cvec%7Bu%7D(t)%7D%7B%5Ctau-t%7Ddt%0A%5Cend%7Balign%7D

其中

%5Cvec%7Bu%7D(t)%3D%0A%5Cbegin%7Bbmatrix%7D%0A%5Ccos%5Cvarphi_c%5Ccos%5Cpsi_c%5C%5C%5Csin%5Cvarphi_c%5Csin%5Cpsi_c%5C%5C-%5Csin%5Cpsi_c%0A%5Cend%7Bbmatrix%7D

在正式积分前,先做几个近似(不然算不动),这里只举一个姿态角的例子

%5Cbegin%7Balign%7D%0A%5Ccos%5Cvarphi_c%26%3D%5Ccos(%5Cvarphi_v-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%5C%5C%0A%26%3D%5Ccos%5Cvarphi_v%5Ccos(-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%2B%5Csin%5Cvarphi_v%5Csin(-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%0A%5Cend%7Balign%7D

含k的都是小量,所以近似认为

%5Cbegin%7Balign%7D%0A%5Ccos(-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%26%5Capprox1%20%5C%5C%0A%5Csin(-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%26%5Capprox%20-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt%5C%5C%0A%5Cend%7Balign%7D

除此之外预定着陆点与轨道平面非常接近所以%5Cpsi_v也是小量,因此

%5Cbegin%7Balign%7D%0A%5Csin(%5Cpsi_v)(-k_%7B%5Cvarphi1%7D%2Bk_%7B%5Cvarphi2%7Dt)%5Capprox0%0A%5Cend%7Balign%7D

以上三个公式对另外一个姿态角的k也适用

这样积分就是人能算的了,为了写起来简洁我们先设定四个推力积分

%5Cbegin%7Balign%7D%0AF0%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cfrac%7BV_e%7D%7B%5Ctau-t%7Ddt%3DV_e%5Cln%5Cfrac%7B%5Ctau%7D%7B%5Ctau-t_%7Bgo%7D%7D%5C%5C%0AF1%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cfrac%7BV_e%7D%7B%5Ctau-t%7Dtdt%3D%5Ctau%20F0-V_et_%7Bgo%7D%5C%5C%0AF2%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cint_0%5Es%5Cfrac%7BV_e%7D%7B%5Ctau-t%7Ddtds%5C%5C%0AF3%26%3D%5Cint_0%5E%7Bt_%7Bgo%7D%7D%5Cint_0%5Es%5Cfrac%7BV_e%7D%7B%5Ctau-t%7Dtdtds%5C%5C%0A%5Cend%7Balign%7D

推力项积分结果是

%5Cbegin%7Balign%7D%0A%5CDelta%20%5Cvec%7BV%7D_t%26%3D%0A%5Cbegin%7Bbmatrix%7D%0AF0%5Ccos%5Cvarphi_v%2BF0k_%7B%5Cvarphi1%7D%5Csin%5Cvarphi_v-F1k_%7B%5Cvarphi2%7D%5Csin%5Cvarphi_v%5C%5C%0AF0%5Csin%5Cvarphi_v-F0k_%7B%5Cvarphi1%7D%5Ccos%5Cvarphi_v%2BF1k_%7B%5Cvarphi2%7D%5Ccos%5Cvarphi_v%5C%5C%0AF0k_%7B%5Cpsi1%7D%5Ccos%5Cpsi_v-F1k_%7B%5Cpsi2%7D%5Ccos%5Cpsi_v%2BF0%5Csin%5Cpsi_v%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5C%5C%0A%5CDelta%20%5Cvec%7BR%7D_t%26%3D%0A%5Cbegin%7Bbmatrix%7D%0AF2%5Ccos%5Cvarphi_v%5Ccos%5Cpsi_v%2BF2k_%7B%5Cvarphi1%7D%5Csin%5Cvarphi_v-F3k_%7B%5Cvarphi2%7D%5Csin%5Cvarphi_v%5C%5C%0AF2%5Csin%5Cvarphi_v%5Ccos%5Cpsi_v-F2k_%7B%5Cvarphi1%7D%5Ccos%5Cvarphi_v%2BF3k_%7B%5Cvarphi2%7D%5Ccos%5Cvarphi_v%5C%5C%0AF2k_%7B%5Cpsi1%7D%5Ccos%5Cpsi_v-F3k_%7B%5Cpsi2%7D%5Ccos%5Cpsi_v%2BF2%5Csin%5Cpsi_v%0A%5Cend%7Bbmatrix%7D%0A%5Cend%7Balign%7D(3)

欸嘿



联立

现在回到公式(1),初始与终端状态%5Cvec%7BR%7D%2C%5Cvec%7BV%7D%2C%5Cvec%7BR%7D_f%2C%5Cvec%7BV%7D_f是已知的,引力项与滑行项%5CDelta%5Cvec%7BR%7D_g%2C%5CDelta%5Cvec%7BV%7D_g%2C%5CDelta%5Cvec%7BR%7D_c由公式(2)给出,推力项%5CDelta%5Cvec%7BV%7D_t%2C%5CDelta%5Cvec%7BR%7D_t由公式(3)给出,把这三个联立起来,就能求出四个k的值

%5Cbegin%7Balign%7D%0Ak_%7B%5Cvarphi1%7D%20%26%3D%20%5Cfrac%7BY_f-F2%5Csin(%5Cvarphi_v)%5Ccos(%5Cpsi_v)-1%2F2g_%7Bmy%7Dt_%7Bgo%7D%5E2-V_yt_%7Bgo%7D-Y%7D%7B(-F2%2B%5Cfrac%7BF3*F0%7D%7BF1%7D)%5Ccos(%5Cvarphi_v)%7D%20%5C%5C%0Ak_%7B%5Cvarphi2%7D%20%26%3D%20k_%7B%5Cvarphi1%7D%5Cfrac%7BF0%7D%7BF1%7D%20%5C%5C%0Ak_%7B%5Cpsi1%7D%20%26%3D%20%5Cfrac%7BZ_f%2BF2%5Csin(%5Cpsi_v)-1%2F2g_%7Bmz%7Dt_%7Bgo%7D%5E2-V_zt_%7Bgo%7D-Z%7D%7B(F2-%5Cfrac%7BF3F0%7D%7BF1%7D)%5Ccos(%5Cpsi_v)%7D%20%5C%5C%0Ak_%7B%5Cpsi2%7D%20%26%3D%20k_%7B%5Cpsi1%7D%5Cfrac%7BF0%7D%7BF1%7D%0A%5Cend%7Balign%7D


未完待续

虽然这篇文章虽然求解出了姿态角随时间变化的函数,但依然存在很多问题

    终端只限定了速度和2个位置分量,第三个位置分量应当怎么处理

    星球在自转,落点的位置在不断的变化,如果建立的是非旋转系,落点会不准,如果建立的是旋转系,重力计算会不准

    计算里引入了大量的近似,每一次近似都会引入微小的误差,任何一点微小的误差都有可能导致最终偏离着陆点很远的距离

    总飞行时间大多有上百秒,k_%7B%5Cvarphi2%7Dt%2Ck_%7B%5Cpsi2%7Dt的大小会逐渐变大,太大了会导致前面作为小量的近似误差很大


参考资料

[1] 丁文浩. 月球探测器动力下降段制导控制方法研究[D].哈尔滨工业大学,2022.

[2] 李伟. 基于精确控制解的运载火箭迭代制导自适应性分析研究[D]. 哈尔滨工业大学, 2012.

[3] oPengLuo. 迭代制导总结. https://blog.csdn.net/qq_25777815/article/details/91858142


迭代制导真空单级定点着陆原理【2】的评论 (共 条)

分享到微博请遵守国家法律