~/blog
/
technology
/
gnss-no-internet
Technology
GNSS
// 2026-08-04
~ ۱۵ دقیقه مطالعه
چرا سیستم موقعیتیاب ماهوارهای بدون اینترنت کار میکند؟
یک آزمایش عجیب انجام دهید: گوشی را روی حالت هواپیما بگذارید و اینترنت را کاملاً قطع کنید. حالا اپلیکیشن نقشه را باز کنید. باورکردنی نیست، اما ممکن است گوشی شما همچنان بتواند موقعیتتان را پیدا کند.
ما معمولاً موقعیت مکانی را با اینترنت، دکلهای مخابراتی و نقشههای آنلاین مرتبط میدانیم. اما سیستمهای موقعیتیاب ماهوارهای یک راز جالب دارند: برای اینکه بفهمند شما کجای زمین هستید، لازم نیست اصلاً بدانند شما چه کسی هستید. لازم نیست به شما پیام بدهند. لازم نیست موقعیتتان را از یک سرور بپرسند. حتی لازم نیست شما چیزی برای ماهواره بفرستید. فقط کافی است چند سیگنال را از آسمان دریافت کند... و بعد، با استفاده از زمان، فاصله و چند معادله ریاضی، جای شما را پیدا کند.
اما این فرایند چطور ممکن است؟
#
یک اشتباه رایج؛ سیستم موقعیتیاب و اینترنت یکی نیستند
اول باید یک سوءتفاهم مهم را برطرف کنیم. چیزی که ما روی گوشی به آن «GPS» میگوییم، در واقع فقط یکی از چندین سیستم موقعیتیاب ماهوارهای یا GNSS (Global Navigation Satellite System) است.
GPS سیستم آمریکایی است، اما سیستمهای دیگری هم وجود دارند:
🇺🇸 GPS
سیستم آمریکایی — قدیمیترین و معروفترین
🇨🇳 BeiDou
سیستم چینی — با پوشش جهانی
گوشیهای امروزی معمولاً از ترکیب چندتا از این سیستمها همزمان استفاده میکنند. اما همهشان یک اصل مشترک دارند. GNSS یک سامانه موقعیتیابی ماهوارهای است و Google Maps یا هر اپلیکیشن نقشه، نرمافزاری است که موقعیت شما را روی نقشه نمایش میدهد. این دو یکی نیستند. سیستم موقعیتیاب فقط میتواند به گوشی بگوید:
Latitude: 35.6892 Longitude: 51.3890
اما اینکه این مختصات روی نقشه کجا قرار گرفته، نام خیابان چیست، مسیر بعدی کدام است و آیا در خیابان روبهرو ترافیک وجود دارد، وظیفه نرمافزار نقشه و دادههای جانبی است.
ⓘ
بنابراین ممکن است:
GNSS Internet
و گوشی هنوز بتواند موقعیت جغرافیایی شما را محاسبه کند. البته برای نمایش نقشه آنلاین، دریافت اطلاعات ترافیکی، جستجوی مکانها و بسیاری از قابلیتهای دیگر همچنان به اینترنت نیاز دارید؛ مگر اینکه نقشهها را از قبل بهصورت Offline ذخیره کرده باشید.
#
ماهواره هیچوقت از شما نمیپرسد کجا هستید
یکی از جالبترین قسمتهای سیستمهای موقعیتیاب همینجاست. شاید تصور کنید گوشی شما یک درخواست به ماهواره ارسال میکند: «من اینجا هستم، لطفاً موقعیت من را حساب کن.»
اما چنین اتفاقی نمیافتد. ماهوارههای GNSS عمدتاً نقش فرستنده دارند. آنها دائماً سیگنالهای رادیویی را به سمت زمین ارسال میکنند و گیرنده داخل گوشی، خودرو یا دستگاه ناوبری این سیگنالها را دریافت میکند.
✓ واقعیت
Satellite
Radio Signal
GNSS Receiver
✗ اشتباه
Receiver
Request
Satellite
به همین دلیل سیستم موقعیتیاب میتواند بدون اینترنت کار کند. گوشی شما فقط باید بتواند سیگنال ماهوارهها را دریافت و پردازش کند.
ⓘ
در واقع: گیرنده GNSS با پردازش سیگنالهای ارسالی از ماهوارهها، زمان انتشار سیگنال و اطلاعات مربوط به موقعیت ماهوارهها، فاصله تقریبی خود را از چند ماهواره محاسبه میکند.
#
پس گوشی از کجا میفهمد ماهواره کجاست؟
اینجاست که سیستم موقعیتیاب کمی پیچیدهتر میشود. هر ماهواره فقط یک «نقطه نورانی» در آسمان نیست. گیرنده باید بداند ماهواره در چه موقعیتی قرار دارد و سیگنال دقیقاً چه زمانی ارسال شده است.
برای همین، سیگنالهای ماهواره شامل اطلاعات ناوبری هستند که از جمله شامل دادههای زمان و اطلاعات مربوط به مدار و موقعیت ماهواره میشوند. دو مفهوم مهم اینجا وجود دارند:
Ephemeris
اطلاعات دقیقتر برای محاسبه موقعیت همان ماهواره در زمان مشخص
Almanac
اطلاعات کلیتر و کمدقتتری درباره وضعیت منظومه ماهوارهای
گیرنده با استفاده از این دادهها میتواند بفهمد: «این ماهواره در این لحظه تقریباً کجاست؟» حالا فقط یک سؤال باقی میماند: «من نسبت به این ماهواره چقدر فاصله دارم؟» و پاسخ این سؤال، قلب اصلی موقعیتیابی ماهوارهای است.
#
سیستم موقعیتیاب در واقع با «زمان» موقعیت شما را پیدا میکند
فرض کنید یک ماهواره دقیقاً در یک زمان مشخص، سیگنالی را ارسال میکند. سیگنال با سرعت نور حرکت میکند و گوشی شما چند لحظه بعد آن را دریافت میکند:
Satellite Time = 12:00:00.000000
↓ (سرعت نور)
Receive Time = 12:00:00.070000
اگر بدانیم سیگنال چه مدت در راه بوده، میتوانیم فاصله تقریبی گوشی تا ماهواره را محاسبه کنیم:
d = c × Δt
Distance = Speed of Light × Signal Travel Time
این فاصله در GNSS به شکل دقیقتر یک Pseudorange یا «شبهفاصله» است، چون خطاهای مربوط به ساعت گیرنده، ساعت ماهواره و مسیر عبور سیگنال نیز در آن وجود دارند:
ρᵢ = ||r - sᵢ|| + cΔt + εᵢ
که در آن ρᵢ فاصله اندازهگیریشده از ماهواره i، r موقعیت واقعی گیرنده، sᵢ موقعیت ماهواره i، c سرعت نور، Δt خطای ساعت گیرنده و εᵢ سایر خطاهاست.
گیرنده در نهایت باید موقعیت خودش و خطای ساعتش را از روی چند اندازهگیری حل کند.
#
ترفند اصلی؛ یک ماهواره کافی نیست
فرض کنید فقط یک ماهواره داشته باشیم. اگر بدانیم فاصله شما تا آن ماهواره ۲۰ هزار کیلومتر است، شما میتوانید در هر نقطهای روی سطح یک کره با شعاع ۲۰ هزار کیلومتر قرار داشته باشید.
Satellite Progression
1 Satellite
یک کره بزرگ از موقعیتهای احتمالی
2 Satellites
محدوده بسیار کوچکتر
3 Satellites
موقعیت در فضای سهبعدی
4 Satellites
+ اصلاح خطای ساعت
اما یک مشکل بزرگ وجود دارد: ساعت گوشی شما به اندازه ساعت اتمی ماهوارهها دقیق نیست. و اینجاست که ماهواره چهارم وارد داستان میشود. گیرنده باید چهار مجهول را پیدا کند:
X
موقعیت روی محور X
Y
موقعیت روی محور Y
Z
ارتفاع
Δt
خطای ساعت گیرنده
بنابراین در حالت معمول، گیرنده برای حل موقعیت سهبعدی به حداقل چهار ماهواره نیاز دارد. اینجا دیگر سیستم موقعیتیاب از یک «نقشه جادویی» فاصله میگیرد و تبدیل میشود به یک مسئله واقعی از هندسه، زمانسنجی و حل معادلات غیرخطی.
#
اسم این تکنیک چیست؟
شاید اصطلاح Triangulation را شنیده باشید. اما سیستمهای موقعیتیاب بهصورت کلاسیک از زاویهها برای پیدا کردن موقعیت استفاده نمیکنند. ماهوارهها بیشتر به شما میگویند: «سیگنال من چه مدت در راه بوده؟» و از روی آن، فاصله تقریبی محاسبه میشود. بنابراین مفهوم اصلی Trilateration است.
Trilateration
هر ماهواره یک محدوده فاصله مشخص ایجاد میکند. جایی که این محدودیتها با هم سازگار میشوند، موقعیت شماست.
البته سیستم موقعیتیاب واقعی کاملاً به این شکل ساده نیست. چون با خطای ساعت، خطای مدار ماهواره، تأخیر یونوسفری و تروپوسفری، بازتاب سیگنال از ساختمانها و خطاهای دیگر سروکار داریم. اما ایده اصلی همچنان همین است:
چند ماهواره + اندازهگیری زمان سیگنال = موقعیت شما
#
اگر بخواهیم ایده موقعیتیابی را با پایتون شبیهسازی کنیم
فرض کنیم موقعیت چهار ماهواره را داریم و هر کدام یک شبهفاصله اندازهگیریشده به ما دادهاند. ما باید چهار مجهول را پیدا کنیم: x, y, z, clock_bias. برای یک مدل آموزشی ساده میتوانیم مسئله را با یک حلکننده عددی حل کنیم:
import numpy as np
from scipy.optimize import least_squares
# Satellite positions (km)
satellites = np.array([
[15600, 7540, 20140],
[18760, 2750, 18610],
[17610, 14630, 13480],
[19170, 610, 18390]
], dtype=float)
# Measured pseudoranges (km)
pseudoranges = np.array([
23286.8756,
23756.9694,
23450.3619,
23952.3185
])
def equations(x):
"""x[0:3] -> position, x[3] -> clock bias"""
receiver_position = x[:3]
clock_bias = x[3]
distances = np.linalg.norm(satellites - receiver_position, axis=1)
return distances + clock_bias - pseudoranges
solution = least_squares(equations, np.zeros(4))
x, y, z, clock_bias = solution.x
print("X:", x, "Y:", y, "Z:", z)
print("Clock bias:", clock_bias)
▶ X: 1000.0 Y: 2000.0 Z: 3000.0
▶ Clock bias: 100.0
البته این کد یک گیرنده واقعی نیست. در یک گیرنده واقعی، قبل از اینکه چنین معادلاتی حل شوند، سیگنال RF باید دریافت و پردازش شود، کدهای ماهواره شناسایی شوند، زمان سیگنال استخراج شود و اطلاعات مداری و خطاهای مختلف نیز در محاسبات وارد شوند. اما همین کد نشان میدهد که موقعیتیابی ماهوارهای در نهایت یک مسئله محاسباتی است که از چند اندازهگیری فاصله و زمان، موقعیت شما را تخمین میزند.
توضیح مهم: گیرنده GNSS گوشی شما در حال انجام چیزی بسیار پیچیدهتر از این مثال است، اما ایده بنیادی همچنان بر پایه همین اندازهگیریهاست.
#
پس چرا اینترنت گاهی باعث میشود موقعیتیابی سریعتر شود؟
اگر سیستم موقعیتیاب بدون اینترنت کار میکند، پس چرا وقتی اینترنت روشن است، موقعیت ما معمولاً سریعتر پیدا میشود؟ اینجا باید بین GNSS و Assisted GNSS یا A-GNSS تفاوت قائل شویم.
گوشی برای پیدا کردن موقعیت از روی سیگنال ماهوارهای، باید ابتدا ماهوارههای قابل مشاهده را پیدا کند و دادههای مورد نیاز را دریافت و پردازش کند. این فرآیند در بعضی شرایط میتواند زمانبر باشد. اما وقتی گوشی به اینترنت یا شبکه موبایل دسترسی دارد، سیستمهای Assisted GNSS میتوانند اطلاعات کمکی مورد نیاز را سریعتر در اختیار گیرنده قرار دهند و زمان رسیدن به اولین موقعیت یا Time to First Fix را کاهش دهند.
بنابراین اینترنت لزوماً موقعیتیابی را «ممکن» نمیکند. فقط میتواند کمک کند گوشی زودتر و گاهی با ترکیب منابع مختلف، بهتر موقعیت خود را پیدا کند:
GNSS Modes
GNSS بدون اینترنت
میتوانم موقعیتم را پیدا کنم
GNSS + Assistance Data
سریعتر موقعیتم را پیدا میکنم
GNSS + Wi-Fi + Cellular
بهترین تخمین در شرایط مختلف
#
پس چرا داخل ساختمان سیگنال ماهواره ضعیف میشود؟
حالا احتمالاً متوجه شدهاید چرا سیستم موقعیتیاب داخل ساختمانها، پارکینگها و بین ساختمانهای بلند عملکرد ضعیفتری دارد. سیگنال ماهواره باید از فاصلهای بسیار زیاد به گوشی شما برسد. ماهوارهها در مدارهای متوسط زمین در ارتفاعی حدود ۲۰٬۲۰۰ کیلومتری قرار دارند و سیگنالی که به زمین میرسد بسیار ضعیف است.
اگر ساختمان، دیوار بتنی یا محیط بسته جلوی مسیر سیگنال را بگیرد، گیرنده کار بسیار سختتری برای استخراج اطلاعات دقیق خواهد داشت. بازتاب سیگنال از ساختمانها نیز میتواند خطا ایجاد کند؛ پدیدهای که در GNSS به آن Multipath گفته میشود.
ⓘ
پس وقتی سیستم موقعیتیاب داخل یک مرکز خرید یا پارکینگ موقعیت دقیقی به شما نمیدهد: مشکل از این نیست که ماهوارهها «این مکان را نمیشناسند»؛ مسئله این است که سیگنال ورودی برای اندازهگیری دقیق، بهخوبی قابل اعتماد نیست.
#
و حالا قسمت باورنکردنی ماجرا؛ موقعیتیاب ماهوارهای به نسبیت انیشتین وابسته است
شاید تا اینجا فکر کنید سیستم موقعیتیاب فقط ترکیبی از ماهواره، رادیو و چند معادله هندسی است. اما داستان حتی عجیبتر از این است. GNSS بدون در نظر گرفتن نظریه نسبیت انیشتین نمیتوانست با دقت امروزی کار کند.
ماهوارههای GNSS دارای ساعتهای بسیار دقیقی هستند و موقعیتیابی بهشدت به زمان وابسته است. اما ساعت ماهوارهای که با سرعت زیادی در مدار زمین حرکت میکند و در میدان گرانشی متفاوتی نسبت به سطح زمین قرار دارد، دقیقاً با همان نرخ ساعت روی زمین کار نمیکند:
نسبیت خاص
حرکت سریع ماهواره باعث میشود ساعت آن کندتر کار کند
نسبیت عام
گرانش ضعیفتر در ارتفاع باعث میشود ساعت آن سریعتر کار کند
حاصل ترکیب این دو اثر این است که ساعتهای ماهوارهای در مجموع حدود ۳۸ میکروثانیه در روز سریعتر از ساعتهای روی زمین حرکت میکنند. ۳۸ میکروثانیه شاید عددی کاملاً بیاهمیت به نظر برسد. اما سیستم موقعیتیاب با زمان موقعیت شما را پیدا میکند.
چرا ۳۸ میکروثانیه مهم است؟
38 μs/day
سیگنال ۳۸ میکروثانیه اضافی در راه است
38 μs × سرعت نور
300,000 km/s × 0.000038 s
≈ 11 km خطا در محاسبه فاصله
یعنی اگر این ۳۸ میکروثانیه اصلاح نمیشد، هر روز موقعیت شما حدود ۱۱ کیلومتر از محل واقعیتان دورتر میشد. در عرض چند روز، نقطه آبی روی نقشه دیگر روی خیابان شما نبود — بلکه چند محله آنطرفتر بود!
ⓘ
به همین دلیل، اصلاحات نسبیتی بخش ضروری GNSS هستند: نه یک ویژگی جانبی یا تجملی. یعنی هر بار که نقطه آبی را روی نقشه میبینید، در پشت صحنه سیستمی را میبینید که برای کارکرد دقیق آن، اثرات نسبیت انیشتین نیز باید در نظر گرفته شوند.
#
چرا نقطه آبی روی نقشه اینقدر سریع پیدا میشود؟
حالا میتوانیم تمام ماجرا را کنار هم بگذاریم. وقتی موقعیتیاب گوشی خود را فعال میکنید، اتفاقی شبیه این رخ میدهد:
GNSS Pipeline
1
دریافت سیگنال ماهوارهها
2
اندازهگیری زمان رسیدن سیگنال
3
محاسبه موقعیت ماهوارهها
5
حل معادلات Trilateration
Latitude + Longitude + Altitude
نمایش نقطه روی نقشه
و تمام این اتفاقات میتوانند بدون اینکه گوشی شما حتی یک Byte داده از اینترنت دریافت کند، انجام شوند. اینترنت فقط میتواند در بخشهای دیگری وارد ماجرا شود:
Internet Role
دانلود نقشه
دریافت ترافیک
جستجوی مکانها
Assisted GNSS
بهبود زمان اولین موقعیت
اما خود موقعیتیابی ماهوارهای، به یک اتصال دائمی به اینترنت وابسته نیست.
#
یک ماهواره، یک ساعت و چند معادله
هر بار که بدون اینترنت در جادهای حرکت میکنید و نقطه آبی روی نقشه دقیقاً همراه شما حرکت میکند، در واقع یک اتفاق بسیار پیچیده در حال رخ دادن است.
ماهوارههای حدود ۲۰ هزار کیلومتر بالاتر از زمین، سیگنالهایی را در فضا پخش میکنند. گوشی شما آنها را دریافت میکند. زمان رسیدن سیگنال را اندازه میگیرد. موقعیت ماهوارهها را محاسبه میکند. چندین فاصله را با هم مقایسه میکند. خطای ساعت خودش را پیدا میکند. معادلات را حل میکند. و در نهایت به شما میگوید:
«شما اینجا هستید.»
بدون اینکه از شما بپرسد. بدون اینکه لازم باشد با شما ارتباط برقرار کند. و حتی بدون اینکه بدانید چند ده ماهواره در آن لحظه بالای سر شما در حال ارسال سیگنال هستند.
GNSS در واقع یک سیستم عظیم برای اندازهگیری زمان است که ما از نتیجه آن برای پیدا کردن مکان استفاده میکنیم. و شاید جذابترین بخش داستان همین باشد:
گاهی برای اینکه بفهمید دقیقاً کجا هستید، لازم نیست به اینترنت وصل شوید؛ کافی است به سیگنالهایی که از آسمان میآیند گوش دهید.
نقطه آبی روی نقشه ساده به نظر میرسد؛
اما پشت آن، زمان، فاصله، هندسه و نسبیت
دست به دست هم دادهاند تا بگویند:
تو دقیقاً اینجایی.