RTCM SC-104 はディファレンシャルGPS補正情報を無線機などの2次ソースからGPS受信機へ送信するための通信プロトコルである。標準規格名は作成元であるRadio Technical Commission for maritime Services (RTCM)のSpecial Committee 104から取られている。規格のフォーマットはメッセージのソースは定義しておらず、海洋無線や通信衛星による放送、インターネット配信などさまざまなシステムで用いられた。

最初に広く使われたフォーマットバージョンは1990年にリリースされた、GPS衛星が用いる30ビット長の”フレーム”と呼ばれるパケットに基づいていた。各メッセージは規定の2フレームのヘッダーで始まり、1つか複数個のデータフレームが続いた。フレームはGPS受信機に統合しやすいようにGPSのフレームに似せて設計されたが、スループットが低いという欠点があり一定の時間内に送信できるメッセージ数に制限があった。

スループットを改善し送信メッセージ数を増やすことができる可変長フォーマットを用いたまったく新しいメッセージフォーマットがバージョン3として2003年に導入された。このことはリアルタイムのGPS補正のために重要であった。新規格はメッセージの種類の数も大きく増大させた。規格化プロセスの過程でネーミングが変わり、バージョン3.1 は RTCM Standard 10403.1 となった。2021年5月20日現在、最新バージョンは3.3 または 10403.3 修正1および2付きである。

RTCM SC-104 はDGPSの唯一の標準ではない。トリンブルは Compact Measurement Record (CMRx) フォーマットを同じ目的のために導入し、また他にも特定用途向けの同様の標準が存在する。これらのほとんどは 10403.1 の導入により使われなくなった。

 内容 

 バージョン 1 
最初のSC-104は1985年に暫定版として発行されたが普及することはなく、類似するバージョン 2に置き換えられた。

 バージョン 2 
RTCM バージョン 2 は1990年1月にリリースされ最新版は2001年8月リリースの2.3である。

RTCM バージョン 2 は、結合してより長いメッセージである”フレーム”を構成する30ビット固定長の”ワード”のセットに基づいている。すべてのワードは、GPS信号と同じくハミング符号に基づくアルゴリズムを使った6ビットの”パリティ”コードで終わる。したがって残りの24ビットがデータとなる。フォーマットは親しみやすさを維持するため意図的に実際のGPSメッセージをモデルとした。24ビットのデータ個別に取り出され、送信用にASCIIベースのシリアル通信に適合するスタートビット1と末尾0と6ビットのデータで構成する単一の8ビットデータにエンコードされる。データはASCIIがLSBであるのとは逆のMSBフォーマットでエンコードされるため、デコード時に受信したデータのビット順を元に戻さなければならないことがある。

すべてのフレームは規定された2ワードのヘッダーで始まる。最初のワードは8ビットの”プリアンブル” 01100110 のマジックナンバーで始まる。次に6ビットは0から64のメッセージタイプを表す。さらに10ビットのステーションIDが続く。2番目のヘッダーワードはGPSの時刻単位である13ビットのzカウントで始まり、フレーム順が異なったときにソートするための 3ビットのシーケンス番号、5ビットのフレーム内のヘッダーを含む総ワード数、3ビットの”ステーションヘルス”コードと続く。ステーションヘルスコードが111の時はステーションが適切に動作していないことを表す

全部で64のメッセージタイプが定義可能であるが、いくつかは将来の拡張のために意図的に未使用のままにされていたり、使われなかったり、廃棄された。最初の規格は6つのメッセージフォーマットを持ち、タイプ1は補正データ用、タイプ2は前の補正データの更新用、タイプ3は基準局の位置提供用、タイプ6は未使用スロットを埋めるためのNULLメッセージ、タイプ16は任意の90文字を持たせる送信テスト用、タイプ59は機器ベンダー固有のメッセージである。

タイプ1は基準局が受信したすべての衛星の完全なDGPS補正データである。1つの衛星の補正データに40ビット必要なので、24ビット内に効率よく格納するため、3衛星分の補正データが5ワードに畳み込まれた。1つの衛星の補正データは1ビットの”スケールファクタ”（S)で始まり、2ビットの”user differential range error" (UDRE)、衛星の5ビットの識別子と続く。補正データ自体は16ビットの"擬似距離補正"(PRC)と8ビットの"range-rate補正" (RRC)の2パートに分けられ、最後に8ビットの"issue of data" 番号が続く。

これによりタイプ1メッセージ長くなりがちである。例えば、5衛星受信している基地局は最後のワードの16ビットが空になる11個の30ビットワードを使用する。空ビットはプリアンブルとの混同を避けるために1と0を交互に埋める。メッセージタイプ2はもっと短くなる。このメッセージは定期的に既存の補正データをよりコンパクトは形式で更新する。タイプ3は受信機が適切な基準局を選択できるよう定期的に基準局の位置を送信するために用いられる。

1992年、標準化グループは1センチメートルオーダーの精度を生み出す位相比較GPS（RTK）の検討に迫られた。新しいメッセージタイプ、擬似距離用の18と19および補正用の20と21が提案され1994年にバージョン2.1として標準化された。新しいメッセージタイプ9がタイプ1と2の代替として提供され、最も広く普及したフォーマットの1つになった。1997年のバージョン2.2ではGLONASS対応のためタイプ31からタイプ37までが追加された。タイプ31と32はGPSにおけるタイプ1とタイプ2に相当する。2001年の2.3ではアンテナIDと説明用のタイプ23やアンテナ高のタイプ24、Loran-Cや無線標識局で使われるフィールドなどいくつかのメッセージが追加された。

固定長のパケットとエラー訂正オーバーヘッドの大きさから、バージョン2は非効率だった。このことはほとんどのDGPSユーザにとって問題では無かったが、メッセージ負荷が比較的高いRTKにとっては貧弱な選択肢だった。この理由でトリンブルは1996年に独自の Compact Measurement Record (CMR) フォーマットを導入し、翌年、CMR+にアップデートした。 さらに、パケットが持つ性質、とりわけワードの到着順に依存したパリティシステムはインターネットなどいくつかの配信システムにおいては不適切だった。また、ガリレオや BeiDou のような新しいシステムの導入はこのフォーマットでは使用可能なメッセージがもはや残されていないことを意味した。

 バージョン 3 
2004年2月にリリースされたRTCM バージョン 3は、 最新かつ継続的に進化するRTCM標準規格である。2.3とは対照的に、バージョン3.x では可変長メッセージフォーマットを用い、30ビットワードごとに6ビットのパリティを設けていたのとは逆に、単一の24ビット巡回冗長検査（CRC）をメッセージ全体に対して行っている。以前のバージョンのように、メッセージフォーマットは8ビットのプリアンブルで始まり、6ビットのリザーブ領域、1024バイトまで設定可能な10ビットのメッセージ長と続く。各メッセージごとに定められたヘッダーとデータがあり、CRCで終わる。データの節約量はRTKにおいては特に大きく、バージョン3のRTK補正データは一般的にバージョン2の半分である。

さらに、バージョン3では同じタスクを実現するためのメッセージを個別に送信するのではなく関連するメッセージをグループ化している。例えば、バージョン2では、完全なRTKメッセージを送信するにはタイプ18の補正データと19の擬似距離が必要だったが、バージョン3ではこれらの情報がタイプ1003にまとめられている。さらなる効率化のために同種の情報が複数のメッセージタイプとして定義されていて、タイプ1001はGPS L1周波数のデータのみだが1002はさらに追加情報を持ち、1003と1004は2周波受信できる基地局の利点となる、L1とL2周波数についての同様のデータを持る。

最初の3.0リリースでは1001から1013までの13のメッセージタイプが定義された。1002はL1 GPS測距の詳細を含み、1004はL1とL2の情報を持つ。1010と1012はGLONASSについて同様の情報を持つ。1013はGPS週番号などさまざまなシステム情報を持つ。1005，1006，1007は基地局の詳細を持ち、1007はアンテナ高も持っている。測位関連のメッセージ、1002または1004と、1010または1012とは特定の基地局から毎秒1回ずつ送信される。基地局の詳細情報は20秒から30秒間隔で送信する。

メッセージセットはすぐに拡張され、軌道情報を更新しより速くGPS信号をロックするためのGPSエフェメリスを持つ1019を持つようになった。1020はGLONASSのエフェメリスについてのメッセージである。これらは各衛星からも同様の情報が定期的に送信されているため、メッセージ送信の頻度は低い。最近の追補ではGalileo F（1045）とI（1046）、QZSS（1044）、Beidou(1042）のエフェメリスが追加された。 もう1つの主要な追加は衛星情報を定期的に更新する State Space Representation (SSR) と単一のデータフォーマットで異なる衛星システムの衛星を統合するMultiple Signal Messages (MSM) である。 MSM は受信機に対してドップラー補正を可能にし、受信機が移動しているときのL1信号の曖昧さ除去に用いられる。