# PM1 原生应用程序开发指南 ## 介绍 原生应用是 Autolabor PM1 支持的首要开发方式。.Net 平台上的 SDK 也依赖于原生 SDK。 所谓*原生(Native)*,指的是不运行在任何虚拟机或程序框架中,而是编译到对应平台的机器码,仅依赖于操作系统即可执行的应用程序或程序库。典型的原生库常常是使用 C 或 C++ 编写,PM1 SDK 也是如此。 如果您对原生应用、C++ 以及相关技术心存疑虑,浏览 [PM1 原生应用程序初学者指南](new-users)将带给您启发。 我们还提供了一些[示例](samples)帮助您快速上手 PM1 Native SDK。 ## 环境要求 编译 PM1 Native SDK 或加载静态库需要编译器实现 C++17 的一部分特性,这对应于 **2015 或更高版本的 Visual Studio**,或 **GCC 7.1** 版本以上。 同时,SDK 还需要一些运行库,因此任何基于它构建的应用程序需要 **Windows 7** 以上才能运行。 SDK 支持 Windows x86、Windows x64 及 Linux x64,您也可以自行编译其他版本,除非在 Mac 环境,否则不必更改代码。 ## 开发体验 对于大部分不准备修改 SDK 源码的用户来说,它是一系列*顶层函数(top-level function)*——即不属于任何类的函数。这些函数用于与**一台** Autolabor PM1 底盘交互,或为交互逻辑提供支持。 > 要使用 SDK 在一台计算机上控制多个底盘,可以启动多个进程,或者深入 SDK 内部,使用 [`autolabor::pm1::chassis` 类](https://github.com/autolaborcenter/pm1_sdk/blob/master/src/main/internal/chassis.hh)。后者可能需要对 C++ 较为深入的了解并能够编译 C++ 工程。 SDK 中的大部分函数需要与底盘建立*连接*,意思是说,打开并且独占一个串口资源,并且在使用期间保证连接的可用性。查看[“初始化”函数](api-reference/initialize)了解详情。 在连接期间,可以与底盘进行多种多样的数据交互,包括获取底盘上各种虚拟或实际传感器的读数以及控制机器人底盘行驶。 最重要的虚拟传感器是[“里程计”](api-reference/odometry),这是测量机器人位姿变化的传感器。 有两种方式控制机器人底盘行驶:基于*动作*的控制和*连续*的控制,[这篇文档](../concepts/drive)揭示了细节。