ppp-rtk技术原理

时间: 2023-09-06 10:05:57 浏览: 84
PPP-RTK技术全称为精密点对点实时动态定位技术,是一种高精度的全球卫星导航系统(GNSS)位置解算技术。其原理基于PPP(精密点位置)技术和RTK(实时动态浮点解)技术的结合。 PPP技术是利用卫星信号,通过计算接收机和卫星之间的距离差异以及卫星位置、时钟等参数,实现接收机的高精度定位。此技术要求接收机和卫星信号处于稳定状态,通常需要较长的观测时间进行精确计算。 RTK技术是基于无线电波传播速度极高的特性,利用两个或多个接收机之间的差分观测值进行定位,实现以厘米级甚至亚厘米级的精度。RTK技术在动态环境下的定位准确性更强,但其基线长度较短,通常只能覆盖数十公里范围。 PPP-RTK技术的原理是利用PPP技术进行长基线的初始化定位,然后应用RTK技术进行动态定位。具体步骤如下:首先,进行初始静态观测,并通过PPP技术计算和记录初始位置参数。接下来,在实际测量中,实时接收到的信号与初始参数进行差分处理,得出动态位置。通过PPP-RTK技术,可以在初始观测时间较短的情况下,实现高精度的动态定位。 PPP-RTK技术广泛应用于航空、测绘、精密农业、车辆导航等领域。它具有高精度、实时性强的优点,可以满足许多需要高精度定位的应用场景。然而,PPP-RTK技术也存在一些限制,如对接收机硬件和信号传输的要求较高,以及在长时间无法接收到信号时会产生漂移等问题。因此,需要在具体应用中综合考虑其优势和限制。
相关问题

PPP、RTK、PPP-RTK

PPP(Precise Point Positioning)是一种基于卫星导航系统的定位技术,通过接收多颗卫星的信号进行测量并利用测量数据进行位置计算。PPP根据修正参数的不同,可以分为PPP(浮点解)、PPP-AR(固定解)和PPP-RTK(固定解)。 RTK(Real-Time Kinematic)是一种实时动态定位技术,通过接收卫星信号和基准站信号,利用差分计算的方式实现高精度的定位。RTK在PPP的基础上增加了基准站的数据,可以实现更高的精度和实时性。 PPP-RTK是PPP与RTK技术的结合,通过同时使用PPP和RTK技术,可以在实时定位中实现更高的精度和可靠性。PPP-RTK在PPP的基础上,利用RTK的差分数据进行修正,提高了定位的准确性。 近年来,PPP和PPP-RTK技术在全球范围内得到了广泛应用,并受到了越来越多厂商和用户的关注。这些技术在提供定位服务时,可以播发修正数据,提供更准确的定位结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [关于PPP-RTK技术优势的一些思考与总结](https://blog.csdn.net/weixin_42918498/article/details/129252031)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

ppp-rtk开源软件

### 回答1: PP-RTK是一种开源软件,它是基于PPP(精密点位置)技术和RTK(实时动态差分)技术开发的。PPP技术通过利用全球定位系统(GPS)信号和地球物理学模型来提高测量位置的精确性。RTK技术则是通过接收基站和流动站的相位差分信号来消除大气延迟和其他误差,从而实时计算出测量位置。这两种技术的结合使得PP-RTK能够提供高精度的实时测量结果。 PP-RTK的开源性意味着它的源代码是公开的,任何人都可以访问、使用、修改和共享。这种开源软件的好处是可以提供自由和灵活的定制化选择,用户可以根据自己的需求进行自定义开发和修改。开源软件还能够吸引全球的专业人士和开发者参与其中,促进技术的不断发展和改进。 PP-RTK的应用广泛,包括航空航天、导航定位、农业测绘、地质勘探等领域。通过使用PP-RTK,用户可以获得高精度的位置数据,从而有效提高导航定位的准确性和决策的精确性。以农业测绘为例,农民可以通过PP-RTK获取准确的土壤和作物数据,从而精确控制灌溉和施肥,提高农作物的产量和质量。 总之,PP-RTK是一种基于PPP和RTK技术开发的开源软件,可以为用户提供高精度的位置测量结果,广泛应用于各个领域。它的开源性使得用户可以自由定制和分享,促进了技术的发展和不断改进。 ### 回答2: ppp-rtk是一种开源软件,用于实时运行全球定位系统(GPS)数据处理的精密定位。ppp-rtk是通过使用PPP(精密点位置)和RTK(实时运动定位)技术的组合来实现高精度的定位结果。 PPP利用卫星与基准站之间的测量差异来估算接收器位置,而RTK使用接收器和至少一个基准站之间的相位测量数据来进行实时精确定位。ppp-rtk结合了这两种技术的优点,提供了更高精度、更快速度的定位结果。 ppp-rtk的开源性质意味着它的源代码是公开可用的,任何人都可以查看、修改和分发它。这种开源软件的好处是,它可以通过全球众多贡献者的协作来不断改进和优化,使得软件更加稳定可靠,并且能够适应各种不同的应用和环境。 ppp-rtk开源软件的应用领域包括测绘、地理信息系统、导航、农业、测量等。例如,在测绘和测量领域,ppp-rtk可以提供厘米级别的定位精度,使得地理空间数据的采集更加准确。在农业领域,ppp-rtk可以帮助农民更好地管理农田和作物,提高生产效率。 总之,ppp-rtk是一种开源软件,利用PPP和RTK技术的结合来实现高精度的实时定位。它的开源特性使得它能够持续改进和适应不同的应用需求,广泛应用于各个领域。 ### 回答3: PP-RTK是一种开源的软件,它是一种基于PPP(精密相位定位)技术的实时运动定位解决方案。PPP-RTK通过对全球导航卫星系统(GNSS)接收器接收到的卫星信号进行处理,可以提供精度高、实时性强的定位结果。 PPP-RTK的开源软件提供了一种免费、可定制和可扩展的解决方案,使任何有兴趣的个人或组织都可以自由使用和修改软件。这不仅降低了使用成本,还促进了开发者间的合作和知识共享。 使用PPP-RTK软件的主要优点是精度高和实时性强。由于PPP技术相比传统的差分定位更为精确,它能够实现亚米级的定位精度。而实时性则意味着在接收到GNSS信号后,PPP-RTK可以迅速计算出定位结果,适用于需要快速反应和精确定位的应用场景。 此外,PPP-RTK的开源性还带来了灵活性和可扩展性。开源软件意味着用户可以根据自身需求自定义软件功能,添加新功能或进行软件优化。这些功能和优化可以进一步提高PPP-RTK的性能,并满足不同应用场景的需求。 虽然PPP-RTK开源软件有很多优点,但也需要一定的技术水平和理解度才能正确使用和修改软件。用户需要了解GNSS和PPP技术的基本原理,以便有效使用软件并解决潜在的问题。 总之,PPP-RTK开源软件是一种强大而灵活的实时运动定位解决方案,其将高精度和实时性结合在一起,并通过开源的方式使更多的人能够自由使用和改进软件。

相关推荐

### 回答1: GPS-RTK系统是指全球卫星定位系统(GPS)与实时运动定位技术(RTK)的结合。GPS是一种利用全球卫星定位系统的导航技术,通过接收来自多颗卫星发射的信号,计算接收器与卫星之间的距离,从而确定接收器的位置。然而,普通的GPS定位精度有限,通常在几米到几十米之间。 RTK技术是一种实时运动定位技术,通过同时接收多个基准站发射的信号,利用测量接收到的信号的时间延迟,计算出接收器的位置,并与已知位置的基准站进行比对和校正,实现高精度的定位。RTK技术的精度可以达到亚米甚至毫米级别,具有很高的精度和准确性。 GPS-RTK系统的基本原理是,在已知位置的几个基准站发射信号,接收器接收到这些信号后,通过测量信号的时间延迟计算出接收器与基准站之间的距离,然后利用三角定位法或其他定位算法,确定接收器的位置。由于基准站的位置已知,并且信号的传播速度是已知的,因此可以利用这些信息来计算接收器的位置。通过不断地接收和计算,接收器的位置可以实时更新,从而实现实时运动定位。 GPS-RTK系统具有高精度、实时性好、适用于室外环境和大范围测量等优点,广泛应用于测绘、地理信息系统、地质勘探、机械导航等领域。然而,由于信号的传播受到信号遮挡、多径效应等因素的影响,有时候会导致定位精度的降低,因此在使用GPS-RTK系统时需要注意选择合适的测量环境和采取适当的措施来提高精度和稳定性。 ### 回答2: GPS-RTK(Real-Time Kinematic)是一种实时动态差分定位技术,可以用来提高全球定位系统(GPS)的测量精度。它的基本原理是通过使用两个或多个接收器同时接收卫星信号,将它们之间的相位差异用于计算水平和垂直方向上的位置。 首先,需要在已知位置上设置一个参考站,该站点上的接收器将接收到的卫星信号的相位信息进行记录。然后,在待测站点附近放置一个或多个接收器,在实时接收卫星信号的同时,也接收来自参考站的校正数据。 接收器会测量从卫星到接收器的信号传播时间,并计算出这段时间内的信号相位差。然后,根据这些相位差和已知的参考站位置,可以对接收器的位置进行计算和修正。 GPS-RTK中最关键的是实时解算。接收器将接收到的原始数据经过确切的时序处理和快速运算,实时计算出待测站点的位置。根据由参考站提供的校正数据,将参考站与待测站的相位差异应用到实时解算的结果中,从而获得高精度的定位。 需要注意的是,GPS-RTK的精度受到许多因素的影响,例如大气延迟、多径效应和卫星几何。为了获得更高的精度,还可以使用更多的接收器并进行更复杂的算法处理。 总之,GPS-RTK利用接收器接收卫星信号的相位信息,并结合参考站的数据进行实时解算,从而提供高精度和实时动态差分定位。这项技术在土地测量、建筑施工和地质勘探等领域广泛应用。
RTK是实时运动定位的缩写,它利用全球卫星导航系统(GNSS)提供的信号,通过接收多颗卫星的信号,并与一个已知位置的基准站进行通信,来实现实时精确的位置定位。 RTK定位的原理是基于载波相位观测值。当一个接收器接收到多颗卫星的GNSS信号时,它会从信号中提取出载波相位观测值,并与基准站的观测值进行比较。由于基准站的位置是已知的,接收器可以通过比较两者之间的差异来计算出自己的位置。这个过程需要实时的电波传播时间、电离层延迟、大气延迟等因素的补偿,以及精确的伪距观测值。 Matlab是一种高级技术计算软件,它提供了强大而灵活的工具,用于各种科学和工程应用,包括RTK定位。Matlab可以用于处理、分析和解释RTK定位所产生的数据。它提供了许多函数和算法,用于处理卫星信号、载波相位观测值以及其他相关数据。 利用Matlab,我们可以编写代码来处理和处理RTK定位所需的各种数据。例如,我们可以使用Matlab的信号处理工具箱来处理GPS卫星信号,提取载波相位观测值并进行数据分析。我们还可以使用Matlab的最优化工具箱来实现RTK定位算法,以计算接收器的位置。 总之,RTK定位是一种实时精确的定位技术,利用GNSS信号和基准站数据来计算接收器的位置。Matlab则是一种功能强大的计算软件,可以被用来处理和分析RTK定位所产生的数据,以及实现相关的定位算法。
### 回答1: RTK全称为实时动态差分定位(Real-Time Kinematic),是一种基于全球卫星定位系统(GNSS)的高精度定位技术。其原理是通过对GPS、GLONASS、BeiDou等卫星信号的接收和处理,获取到接收设备与参考站之间的测距误差,进而进行精准的三维定位。RTK定位技术主要包括两个步骤:基站数据的处理和移动站数据的处理。基站数据处理主要包括接收卫星信号、计算接收机与基准站之间的相对距离和发射差分数据等;移动站数据处理主要是通过与基准站数据进行差分处理,进而得到移动站的三维坐标。 程序方面,RTK定位需要使用专门的软件进行实现,常见的软件包括RTKLIB、SNIP等。其中RTKLIB是一个开源的软件包,支持多种GNSS接收机和数据格式,具有较高的定位精度和实时性能。使用RTKLIB进行RTK定位的基本步骤包括:数据采集、数据预处理、数据解算和数据输出等。具体来说,可以通过设置接收机的参数、选择GNSS信号类型和卫星系统、选择差分数据源等方式进行参数配置,进而实现高精度的实时动态定位。 ### 回答2: RTK定位(Real-Time Kinematic Positioning)是一种高精度的全球定位系统(GNSS)定位技术。其原理是通过接收多个卫星发射的信号,并计算接收器与卫星之间的距离,从而确定接收器的位置。 RTK定位算法的核心是差分定位法,即通过将基准站的已知准确位置与接收器的测量位置进行比较,计算出接收器位置的误差,然后利用这个误差进行修正,以提高其定位精度。具体过程如下: 1. 基准站接收到卫星发射的信号,并记录卫星的位置和信号到达时间。 2. 接收器也接收到卫星发射的信号,并记录下信号到达时间。 3. 基准站将其记录的卫星位置和信号到达时间与接收器记录的信号到达时间进行比较,计算出接收器的位置误差。 4. 基准站将计算得到的位置误差通过无线电信号等方式发送给接收器。 5. 接收器根据接收到的位置误差进行修正,并计算出其准确位置。 RTK定位程序的实现包括以下几个步骤: 1. 建立基准站:选取一个已知准确位置的接收器作为基准站,记录卫星位置和信号到达时间,并计算位置误差。 2. 接收器操作:将建立好的基准站信息通过无线电信号等方式发送给接收器。 3. 接收器定位:接收器接收到基准站信息后,计算位置误差,并修正其位置。 4. 结果输出:将修正后的位置输出,并根据需要进行进一步的处理和应用。 RTK定位算法和程序的实现需要借助GNSS接收器和基准站设备,而GNSS接收器能够接收到卫星的信号,并记录相关信息,基准站设备用于确定已知准确位置,并与接收器进行通信。这样,就可以实现高精度的实时定位。 RTK定位算法和程序的应用在航空、航海、地质勘探、土地测量等领域具有广泛的应用前景,可以提高测量和导航的精确性和可靠性。 ### 回答3: RTK(Real-Time Kinematic)定位算法是一种利用全球定位系统(GPS)信号进行实时测量的方法。该算法通过测量接收机与卫星之间信号的传播延迟,以及接收机与基准站之间信号的差异,实现高精度的定位。 RTK定位算法的原理主要包括以下几个步骤:首先,接收机接收到来自多颗卫星的信号,并测量每颗卫星信号的传播延迟。然后,将接收到的信号与其它基准站的信号进行比较,计算出接收机与基准站之间的差异。接下来,利用差异信息进行三角测量计算,求解出接收机的具体位置。 在实际操作中,需要至少使用一个基准站和一个移动接收机。基准站已知位置,精确地测量接收到的卫星信号,并将这些信息与同一时间接收到的移动接收机的信号进行比较。通过计算信号之间的差异,可以得到具体的定位坐标。 RTK定位算法的程序实现主要包括信号传输、信号处理和位置计算三个阶段。首先,需要确保卫星信号能够被接收到,并被传输到接收机或基准站。然后,在接收机或基准站中进行信号处理,通过对信号的差异进行计算,得到接收机的位置信息。最后,根据计算得到的差异信息,进行三角测量计算,得到接收机的具体位置。 总结来说,RTK定位算法通过利用GPS信号的传播延迟和差异信息,实现高精度的定位。在实际应用中,该算法通过信号传输、信号处理和位置计算等步骤实现。
GNSS-RTK算法是一种利用全球导航卫星系统(GNSS)和实时运动测量(RTK)技术相结合的定位算法。GNSS-RTK/INS紧组合算法是在GNSS-RTK算法的基础上,将惯性导航系统(INS)的状态量与GNSS观测值进行融合,进一步提高定位精度。 在GNSS-RTK/INS紧组合算法中,INS推算出的短时高精度结果可以用于辅助周跳检测和模糊度固定等算法,从而提升RTK解算精度。同时,为了适应未来的RTK算法发展,算法中考虑了不使用接收机钟相关的状态量,通过对doppler观测值的处理,消除了接收机钟漂误差,使算法更符合现有的Kalman单点定位流程,并且更易于在未来扩展RTK算法。 在GNSS-RTK/INS紧组合算法中,根据INS推算的天线相位中心到卫星的距离,在基站和卫星之间建立双差观测方程,并考虑了天线位置扰动和IMU位置扰动之间的关系。通过整合多颗卫星的观测结果,并进行卡尔曼滤波时间更新和量测更新,可以得到GNSS-RTK/INS紧组合算法的定位结果。 综上所述,GNSS-RTK算法是一种利用GNSS和RTK技术进行定位的算法,而GNSS-RTK/INS紧组合算法是在GNSS-RTK算法的基础上,融合了INS的状态量,进一步提高了定位精度。123 #### 引用[.reference_title] - *1* *3* [GNSS-RTK/INS紧组合算法](https://blog.csdn.net/qq_41782151/article/details/118102016)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [GNSS算法进阶(三)- 利用doppler更新kalman滤波中的速度状态量+动态测试效果](https://blog.csdn.net/dong20081991/article/details/127738900)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
RTK (Real-Time Kinematic)是一种实时动态差分技术,可以提供高精度的位置和导航解算。它在全球定位系统(GPS)设备中被广泛使用,可以实现厘米、毫米级的精度。RTK技术通过在基站和移动设备之间传输差分修正数据,实时校正卫星信号的误差,从而获得更准确的位置信息。 CASS (Cognitive Automation for Systems and Software)软件是一种基于人工智能的自动化软件开发平台。它利用机器学习、自然语言处理和其它技术,根据开发人员的输入自动编写和优化代码。CASS可以大大提高软件开发的效率和质量,减少了繁琐的编码工作和潜在的人为错误。 结合RTK和CASS技术,RTK CASS软件是一种能够自动生成高精度定位和导航功能的软件。它利用RTK技术实时获取精确的位置信息,同时利用CASS技术自动生成优化的代码,从而实现了高精度的定位和导航解算。 RTK CASS软件在各种领域有着广泛的应用。在地理测量和土地调查中,它可以提供毫米级的测量精度,帮助测量员更准确地绘制地图和测量地形。在农业和精准农业中,它可以帮助农民进行准确的田间操作,实现精确的植株定位和施肥、喷药等农事活动。在自动驾驶和无人机等领域,它可以提供精确的定位和导航支持,实现智能驾驶和精确的飞行路径。 总之,RTK CASS软件是一种结合了RTK实时差分技术和CASS人工智能技术的高精度定位和导航软件,具有广泛的应用前景。
双频RTK是一种全球定位系统(GNSS)技术,通过使用两个频段的信号来提高定位的精确度和可靠性。CSND则是指CSDN,即中国软件开发者社区,是一个广受软件开发者和技术爱好者喜爱的知识分享平台。 双频RTK主要通过接收两个频段(L1和L2)的信号来计算导航接收机与卫星之间的距离。由于L1和L2频段的信号在不同的大气层中传播,并受到不同程度的大气延迟和干扰,所以使用双频信号可以减少大气误差对定位精度的影响。同时,双频RTK还能够通过比较两个频段的信号,进一步排除掉多路径干扰造成的误差,提供更准确的定位结果。 CSDN是一个致力于技术传播和知识分享的社区平台。在CSDN上,开发者可以发布自己的技术博文、代码示例和项目经验,与其他开发者交流和分享技术成果。CSDN拥有大量的注册用户和活跃社区,人们可以在这里找到各种技术问题的解答和学习资源。 双频RTK和CSDN都在不同的领域发挥着重要的作用。双频RTK广泛应用于航空、测绘、农业、建筑和交通等领域,提供高精度的导航和定位服务。而CSDN则成为了软件开发者们互相学习和分享的平台,为技术人员提供了一个互助的社区环境。 总而言之,双频RTK和CSDN在不同的领域发挥着重要的作用,一个是为了提供精准的定位服务,一个是为了推动技术的传播和进步。它们的存在和发展都对于相关行业的发展和技术人员的成长起到了积极的促进作用。

最新推荐

搭建RTK系统方案设计

RTK是利用导航卫星进行实时厘米级高精度定位的技术,是高精度导航中非常重要的核心技术。自主知识产权的高精度产品在系统产品服务中,无论是产品性价比还是产品可持续发展 都具有非常重要的意义。 一、系统介绍 RTK...

详述GPS原理及RTK技术应用

详述GPS原理及RTK技术应用,包括四大卫星定位系统,GPS系统组成:GPS空间部分、地面监控系统和GPS信号接收器(GPS卫星定位车载终端);GPS定位技术(WGS-84坐标系),GPS定位原理(绝对定位原理,相对定位原理,静态...

一种高精度的GPS-RTK定位技术设计与实现

传统的实时动态(Real Time Kinematic,RTK)定位技术通过数传电台在基准站与流动站之间传输差分数据,这样传输距离有限并且容易受到外界因素的干扰,从而影响定位精度。提出以S5PV210微处理器为核心,在Linux 嵌入式...

GPS+RTK测量技术规程

GPS+RTK测量技术规程,RTK测量过程中的各种术语、各种操作标准,各种精度规定等。

中海达RTK简易操作流程

中海达RTK系列产品以其简单易懂、人性化的操作赢得客户好评,下面以GIS+手簿HI-RTK2.5道路版本为例,简要说明其操作流程。

哈希排序等相关算法知识

哈希排序等相关算法知识

混合神经编码调制的设计和训练方法

可在www.sciencedirect.com在线获取ScienceDirectICTExpress 8(2022)25www.elsevier.com/locate/icte混合神经编码调制:设计和训练方法Sung Hoon Lima,Jiyong Hana,Wonjong Noha,Yujae Songb,Sang-WoonJeonc,a大韩民国春川,翰林大学软件学院b韩国龟尾国立技术学院计算机软件工程系,邮编39177c大韩民国安山汉阳大学电子电气工程系接收日期:2021年9月30日;接收日期:2021年12月31日;接受日期:2022年1月30日2022年2月9日在线发布摘要提出了一种由内码和外码组成的混合编码调制方案。外码可以是任何标准的二进制具有有效软解码能力的线性码(例如,低密度奇偶校验(LDPC)码)。内部代码使用深度神经网络(DNN)设计,该深度神经网络获取信道编码比特并输出调制符号。为了训练DNN,我们建议使用损失函数,它是受广义互信息的启发。所得到的星座图被示出优于具有5G标准LDPC码的调制�

利用Pandas库进行数据分析与操作

# 1. 引言 ## 1.1 数据分析的重要性 数据分析在当今信息时代扮演着至关重要的角色。随着信息技术的快速发展和互联网的普及,数据量呈爆炸性增长,如何从海量的数据中提取有价值的信息并进行合理的分析,已成为企业和研究机构的一项重要任务。数据分析不仅可以帮助我们理解数据背后的趋势和规律,还可以为决策提供支持,推动业务发展。 ## 1.2 Pandas库简介 Pandas是Python编程语言中一个强大的数据分析工具库。它提供了高效的数据结构和数据分析功能,为数据处理和数据操作提供强大的支持。Pandas库是基于NumPy库开发的,可以与NumPy、Matplotlib等库结合使用,为数

帮我用C++和Qt写一个m*n的矩阵最小路径和可视化,要求用格子展示,最小路径采用其它的颜色标记

好的,以下是一个基本的实现: 1. 首先需要定义一个矩阵类来存储矩阵数据和计算最小路径和。 ```c++ class Matrix{ public: Matrix(int rows, int cols); ~Matrix(); void setValue(int i, int j, int value); //设置元素的值 int getValue(int i, int j); //获取元素的值 int getRows(); //获取行数 int getCols(); //获取列数 int getMinPathSum(); //获取最

基于android的视频播放器的设计与实现--大学毕业论文.doc

基于android的视频播放器的设计与实现--大学毕业论文.doc