ARCore: این چیست، قابلیت‌ها و فناوری واقعیت افزوده

نویسنده: IT Sectr منتشر شده: 2026-03-25 زمان مطالعه: 8 دقیقه

پلتفرم ARCore راه‌حل Google برای واقعیت افزوده در اندروید است که از دوربین و حسگرهای اینرسی گوشی هوشمند برای ردیابی موقعیت در فضا استفاده می‌کند. به گفته Google AR Developers, 2025، این پلتفرم از Motion Tracking، Environmental Understanding و Light Estimation پشتیبانی می‌کند — سه فناوری اساسی برای قرار دادن اشیاء مجازی در محیط واقعی. معماری چندسکویی به توسعه‌دهندگان اجازه می‌دهد برنامه‌های AR را برای اندروید، iOS، Unity و Unreal Engine با یک پایه کد واحد ایجاد کنند.

نکات اصلی

  • ARCore — پلتفرم Google برای واقعیت افزوده در اندروید، معرفی شده در سال ۲۰۱۸.
  • Motion Tracking — فناوری ردیابی حرکت دستگاه بر اساس IMU و تحلیل تصویر.
  • Environmental Understanding — تشخیص سطوح، مرزها و برجستگی سطوح.
  • Cloud Anchors — مکانیزم همگام‌سازی اشیاء AR بین چندین دستگاه از طریق ابر.
  • ARCore SDK برای اندروید (Kotlin/Java)، iOS، Unity و Unreal Engine در دسترس است.

ARCore چیست؟

ARCore — یک پلتفرم واقعیت افزوده از Google است که در سال ۲۰۱۸ به عنوان جانشین Project Tango در قالبی سبک‌تر و در دسترس‌تر معرفی شد. برخلاف Tango که به حسگرهای عمق تخصصی نیاز داشت، ARCore روی گوشی‌های هوشمند استاندارد اندروید کار می‌کند و فقط از دوربین و حسگرهای اینرسی (IMU) استفاده می‌کند.

ARCore از سه فناوری کلیدی استفاده می‌کند: Motion Tracking برای ردیابی موقعیت دستگاه، Environmental Understanding برای تشخیص سطوح افقی و عمودی و Light Estimation برای تنظیم نور اشیاء مجازی با محیط واقعی. این سه فناوری امکان قرار دادن اشیاء AR را فراهم می‌کنند که روی هر سطحی طبیعی به نظر می‌رسند.

طبق Google I/O 2024، ARCore روی بیش از ۱ میلیارد دستگاه اندرویدی از جمله گوشی‌های Samsung، Xiaomi، Huawei، OnePlus، Google Pixel و غیره پشتیبانی می‌شود. این پلتفرم با Google Play Services for AR ادغام شده است که امکان به‌روزرسانی ARCore را از طریق Google Play Store مستقل از نسخه اندروید فراهم می‌کند.

تکامل ARCore

در طول شش نسخه، ARCore تحول قابل توجهی داشته است: ARCore 1.0 — ردیابی پایه و تشخیص سطوح؛ ARCore 1.2 — سطوح عمودی و Augmented Images؛ ARCore 1.7 — Cloud Anchors برای جلسات چندنفره؛ ARCore 1.10 — Augmented Faces برای ردیابی حالات صورت.

ARCore 1.20+ شامل Scene Semantic Understanding — تشخیص دسته‌بندی اشیاء (کف، سقف، دیوار، مبلمان، گیاه، در) از طریق مدل ML TensorFlow Lite روی دستگاه است. Street View Geometry API امکان استفاده از نقشه‌های عمق Google Street View را برای ناوبری AR در فضای باز فراهم می‌کند.

kotlin
// راه‌اندازی جلسه ARCore
val session = Session(context)
val config = Config(session)
config.lightEstimationMode =
    Config.LightEstimationMode.ENVIRONMENTAL_HDR
config.planeFindingMode =
    Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
session.configure(config)

// پردازش فریم
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
    Plane::class.java
)

ARCore چگونه کار می‌کند

ARCore از رویکرد ترکیبی استفاده می‌کند: IMU (ماژول اندازه‌گیری اینرسی) موقعیت دستگاه را با فرکانس بالا (تا ۱۰۰۰ هرتز) پیش‌بینی می‌کند و اودومتری بصری خطاها را بر اساس تحلیل نقاط مشخصه از دوربین با فرکانس ۳۰–۶۰ هرتز تصحیح می‌کند. این رویکرد دقت ردیابی حدود ۱–۲ سانتی‌متر را در شرایط ثابت فراهم می‌کند.

فرایند Environmental Understanding در سه مرحله کار می‌کند: ابتدا ARCore نقاط مشخصه (feature points) را در تصویر دوربین پیدا می‌کند، سپس خوشه‌های نقاط واقع در یک صفحه را شناسایی کرده و آنها را به چندضلعی تقریب می‌زند. پس از تشخیص صفحه، ARCore یک شیء Trackable از نوع Plane ایجاد می‌کند که با دریافت فریم‌های جدید به‌روز می‌شود.

به گفته Google، ARCore صفحه‌ای به اندازه ۱۰x۱۰ سانتی‌متر را در فاصله تا ۱ متری دوربین تشخیص می‌دهد. برای اتاق‌های متوسط (۲۰ متر مربع) اسکن کامل سطوح حدود ۲–۳۴ ثانیه طول می‌کشد. هنگام استفاده از Depth API با پشتیبانی حسگر ToF، دقت تشخیص ۴۰٪ افزایش می‌یابد.

Depth API و Scene Mesh

Depth API — فناوری ARCore که نقشه عمق صحنه را بر اساس تحلیل استریوی تصویر دوربین می‌سازد. در دستگاه‌های دارای حسگر ToF (Time-of-Flight) نقشه عمق فوراً با دقت تا ۲ سانتی‌متر به دست می‌آید. در دستگاه‌های بدون حسگر عمق، Depth API از یادگیری ماشین برای تخمین عمق از یک فریم استفاده می‌کند که دقت حدود ۱۰ سانتی‌متر را فراهم می‌کند.

Scene Mesh — شبکه سه‌بعدی محیط که ARCore در زمان واقعی می‌سازد. این شبکه برای فیزیک برخورد، محو اشیاء مجازی و سایه‌اندازی استفاده می‌شود. Scene Mesh در دستگاه‌های دارای OpenGL ES 3.1 و پشتیبانی Depth API در دسترس است و تا ۵۰۰ هزار چندضلعی در هر فریم را شامل می‌شود.

kotlin
// دریافت نقشه عمق
val depthImage = frame.acquireDepthImage16Bits()

// قرار دادن شیء روی صفحه تشخیص داده شده
val hitResult = frame.hitTest(x, y)
    .firstOrNull { it.trackable is Plane }

hitResult?.let { result ->
    val anchor = session.createAnchor(
        result.hitPose
    )
    val model = ModelRenderable.builder()
        .setSourceId(R.raw.my_model)
        .build()
        .exceptionally { null }

    AnchorNode(anchor).apply {
        this.renderable = model.get()
    }
}

ARCore و ARKit: مقایسه

اگرچه ARCore و ARKit وظایف یکسانی — ردیابی موقعیت، تشخیص سطوح و ارزیابی نور — را حل می‌کنند، رویکردها و اکوسیستم‌های آنها متفاوت است. ARCore بر چندسکویی و سازگاری تأکید دارد، در حالی که ARKit از ادغام عمیق با سخت‌افزار Apple استفاده می‌کند.

تفاوت‌های کلیدی: ARCore روی اندروید و iOS از طریق ARCore SDK کار می‌کند، ARKit — فقط روی iOS. ARCore از Cloud Anchors برای همگام‌سازی از طریق Firebase استفاده می‌کند، ARKit — از ARWorldMap برای تبادل مستقیم بین دستگاه‌ها. ARCore با Depth API از حسگرهای ToF پشتیبانی می‌کند، ARKit با LiDAR — اسکن لیزری با دقت تا ۳ سانتی‌متر.

بر اساس تست‌های مقایسه‌ای Google 2024، دقت ردیابی ARCore در دستگاه‌های دارای ژیروسکوپ و حسگر ToF قابل مقایسه با ARKit در iPhone دارای LiDAR است — خطا در فاصله ۲ متری از ۲ سانتی‌متر تجاوز نمی‌کند. در دستگاه‌های بدون ToF، ARCore از نظر سرعت راه‌اندازی از ARKit عقب‌تر است: ۳ ثانیه در مقابل ۰.۵ ثانیه.

انتخاب بین ARCore و ARKit به مخاطب هدف بستگی دارد: اگر برنامه فقط برای iOS است — ARKit عملکرد بهتری و دسترسی به ویژگی‌های انحصاری LiDAR فراهم می‌کند. اگر پشتیبانی از هر دو پلتفرم لازم است — ARCore با ARCore iOS SDK امکان استفاده از پایه کد واحد با حداقل تفاوت‌های پلتفرمی را فراهم می‌کند، اگرچه برخی قابلیت‌های سخت‌افزاری هر پلتفرم از دست می‌رود.

ویژگیARCoreARKit
پلتفرمAndroid + iOS + Unity/Unrealفقط iOS
حسگر عمقToF (اختیاری)LiDAR (مدل‌های Pro)
همگام‌سازیCloud Anchors (Firebase)ARWorldMap (Multipeer)
ردیابی صورتAugmented FacesFace Tracking (TrueDepth)
دقت VIO۱–۳ سانتی‌متر۰.۵–۱ سانتی‌متر

ادغام ARCore در برنامه

ادغام ARCore با اضافه کردن وابستگی Google Play Services for AR در build.gradle شروع می‌شود: com.google.ar:core. برنامه باید در دسترس بودن ARCore را روی دستگاه از طریق ArCoreApk.checkAvailability() بررسی کند — اگر ARCore نصب نشده است، به کاربر پیشنهاد نصب از Google Play Store را بدهد.

پروژه پایه ARCore شامل: ایجاد Session و Config، پیکربندی SurfaceView برای نمایش دوربین، شروع جلسه از طریق session.resume() و پردازش فریم‌ها از طریق session.update() است. برای رندر اشیاء سه‌بعدی از Sceneform SDK (کتابخانه Google مبتنی بر Filament) یا Unity/Unreal برای صحنه‌های پیچیده استفاده می‌شود.

Google Sceneform را برای برنامه‌های Kotlin توصیه می‌کند — این کتابخانه اجزای آماده فراهم می‌کند: ModelRenderable برای بارگذاری مدل‌های سه‌بعدی (OBJ، glTF، FBX)، ViewRenderable برای جاسازی نمای اندروید در صحنه AR و MotionEvent برای مدیریت لمس‌ها. Sceneform به طور خودکار چرخه حیات جلسه AR و آزادسازی منابع را مدیریت می‌کند.

مدیریت خطاهای ردیابی

ARCore ممکن است در نور ناکافی، سطوح یکنواخت یا حرکات سریع دستگاه، ردیابی را از دست بدهد. وضعیت ردیابی از طریق frame.getTrackingState() در دسترس است — مقادیر TRACKING، PAUSED و STOPPED. هنگام انتقال به PAUSED توصیه می‌شود رندر را متوقف کرده و به کاربر توصیه‌هایی مانند «دستگاه را آهسته‌تر حرکت دهید» یا «به مکان پرنورتری بروید» نشان داده شود.

برای بازیابی خودکار پس از خطا، ARCore از بازیابی مکان (relocalization) بر اساس نقشه ذخیره‌شده نقاط مشخصه پشتیبانی می‌کند. توسعه‌دهنده می‌تواند نقشه را از طریق session.serialize() ذخیره و از طریق session.deserialize() بازیابی کند — این برای تجربه AR طولانی‌مدت که کاربر به همان فضای فیزیکی بازمی‌گردد مفید است. بازیابی نقشه ۱–۳۲ ثانیه طول می‌کشد به شرطی که محیط تغییر قابل توجهی نکرده باشد.

kotlin
class ARCoreActivity : AppCompatActivity() {

    private lateinit var session: Session

    override fun onResume() {
        super.onResume()
        when (ArCoreApk.getInstance()
            .checkAvailability(this)
        ) {
            ArCoreApk.Availability.SUPPORTED_INSTALLED -> {
                session = Session(this)
                session.resume()
            }
            else -> {
                showInstallPrompt()
            }
        }
    }
}

سوالات متداول

چه دستگاه‌هایی از ARCore پشتیبانی می‌کنند؟

ARCore روی بیش از ۱ میلیارد دستگاه اندرویدی از جمله Google Pixel 2+، Samsung Galaxy S7+، Xiaomi Mi 8+، Huawei P20+، OnePlus 6+، Sony Xperia XZ2+ و بسیاری دیگر پشتیبانی می‌شود. لیست کامل دستگاه‌های تأیید شده در وب‌سایت developers.google.com/ar/devices منتشر شده است.

آیا برای کار ARCore به اینترنت نیاز است؟

عملکردهای پایه ARCore — Motion Tracking و Environmental Understanding — نیاز به اینترنت ندارند. Cloud Anchors و Augmented Images با لینک‌های ابری نیاز به اتصال دارند. Depth API و Scene Mesh کاملاً روی دستگاه بدون اتصال به شبکه کار می‌کنند.

آیا می‌توان برنامه‌های AR بدون Sceneform ایجاد کرد؟

بله، ARCore را می‌توان مستقیماً با OpenGL ES 3.1، با Unity یا Unreal Engine استفاده کرد. Sceneform گزینه توصیه‌شده برای پروژه‌های ساده در Kotlin است اما اجباری نیست. برای صحنه‌های سه‌بعدی پیچیده با فیزیک واقع‌گرایانه بهتر است از موتورهای بازی با پشتیبانی ARCore SDK استفاده شود.

ARCore در داخل و خارج از ساختمان چگونه کار می‌کند؟

ARCore برای فضاهای داخلی با نور کافی بهینه شده است (۱۰۰–۵۰۰ لوکس). در فضای باز زیر نور شدید خورشید، دقت ردیابی ممکن است به دلیل نوردهی بیش از حد دوربین کاهش یابد. برای کار در فضای باز Google استفاده از Street View Geometry API را توصیه می‌کند که نقشه‌های عمق را برای مکان‌های شهری فراهم می‌کند.

ARCore چه تفاوتی با Scene Viewer دارد؟

Scene Viewer — یک کامپوننت UI آماده Google برای مشاهده مدل‌های سه‌بعدی در AR بدون نوشتن کد است که از طریق WebXR کار می‌کند. ARCore یک SDK کامل برای ایجاد تجربه AR سفارشی با کنترل برنامه‌نویسی بر تمام جنبه‌های جلسه، ردیابی و رندر است.

خلاصه

  • ARCore — پلتفرم AR چندسکویی از Google که روی اندروید و iOS کار می‌کند.
  • Motion Tracking از ترکیب IMU و اودومتری بصری برای موقعیت‌یابی دقیق استفاده می‌کند.
  • Cloud Anchors جلسات AR چندنفره با همگام‌سازی از طریق Firebase فراهم می‌کنند.
  • Depth API نقشه عمق صحنه را — برنامه‌نویسی یا از طریق حسگر ToF — می‌سازد.
  • Sceneform — SDK توصیه‌شده برای ایجاد برنامه‌های AR در Kotlin با حداقل کد.
  • سازگاری — بیش از ۱ میلیارد دستگاه اندرویدی با گواهی ARCore.
  • انتخاب بین ARCore و ARKit به پلتفرم هدف و نیازهای دقت بستگی دارد.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید