マルチマシンROSでの時間同期の問題

1458 ワード

ローカルエリアネットワーク内の2台のデバイスの時間同期


プロジェクトの必要性のため、ノートパソコンと無人車のtx 2が無人車のルート内でローカルエリアネットワークを構築する必要がある.しかし、本プロジェクトシステムはROSをフレームワークとしており、2つのデバイスの時間同期が必要である(そうでないと、いろいろなわけのわからないエラーが報告され、筆者は数日困惑して発見した...).
ノートはUuntu 16.04のシステムは、モバイルロボットのTX 2も16.04で、両者はルータを通じてローカルエリアネットワークを構築し、外部ネットワークと接続していない.ローカルエリアネットワーク内の2台のコンピュータをntpで時間同期する方法について説明します.

(1)サーバ側構成


ノートパソコンにntpをインストールします.
$ sudo apt install ntp

プロファイル/etc/ntpを編集します.conf
$ sudo vim /etc/ntp.conf

ファイルに次の内容を追加します.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10

1行目は192.168.2.0/255のネットワークセグメントのマシンが本機と時間同期できるようにするためです.2行目と3行目は、自機のハードウェア時間と自機のntpサービスとを時間同期させるためである.
ntpサービスを再起動するには:
$ sudo /etc/init.d/ntp restart

(2)クライアント構成


ノートパソコンにntpをインストールします.
$ sudo apt install ntp

プロファイル/etc/ntpを編集します.conf
$ sudo vim /etc/ntp.conf

命令による時間同期:
$ sudo /usr/sbin/ntpdate 192.168.2.4

時間同期のたびに上記のコマンドを入力しないように、/etc/crontabファイルで、ツリーベリーパイを毎分ノートと時間同期させるように構成できます.
$ sudo vim /etc/crontab

ファイルの最後に次の内容を追加します.
* * * * * /usr/sbin/ntpdate 192.168.1.101;/sbin/hwlocal -w

ローカルエリアネットワーク内のipが192.168.1.1.1101のホストと1分ごとに時間同期し、ハードウェアに時間を書き込むことを示します.