時刻同期が出来た
研究では,複数台のラズパイとノートPCを使ってROSを実行するのですが,ROSではtfを使う際時間同期をしないといけません
なので,chronyやntpdateを使って外部ネットワークにあるサーバに時刻同期します
ですが,学内のネットワークではSSH接続ができなくてロボットに乗せたラズパイに遠隔接続できないし,携帯のテザリングでは携帯を忘れたらロボットを動かせません
そして,先生に相談したら無線LANだけを貸してくれました
つまり,外部ネットワークに繋げずにROSネットワークを作らない行けなくなりました
なので,夏前はテザリングで動かして夏シンポが終わってから,ラズパイがノートPCへ時刻同期を行うように設定できるかなとトライしていました
で,今日やっと成功しました
主に,参考にしたページはこれです
ja/ROS/NetworkSetup - ROS Wiki
もちろん,公式を見ればいいのですが公式で自分が確認できたのは時刻合わせをしないといけないということでした
なので,それぞれで行ったことをまとめます
いじる場所は,ラズパイ,ノートPCともに
/etc/chrony/chrony.conf
です
ノートPC側
ノートPCには内臓クロックが搭載されているので特に外部に対して時刻同期しなくてもいいものと考えます
なので,ノートPCがラズパイに対して時刻同期を許可すればいいだけです
なので
allow [ラズパイのIPアドレス]
を追加します
こうすることで,ラズパイが時刻同期しようとするのを許可します
IPアドレスは,無線LANの設定から固定のIPアドレスを与えます
次に加えるのが
local stratum 10
です
これは,ノートPCが外部のサーバに対して時刻同期できなくても,ノートPCの時刻は信頼できるものとして,ラズパイが参考できるというものです
普段,時刻同期はネットにつなげば行われるのですが,もし同期できなければ信頼度が16となり,参考にできないようになります
(信頼度は1が最高で15が最低です)
今回の設定では,同期できなければ10の信頼度でもいいなら同期してもいいよというものです
ラズパイ側
まず,ラズパイ側ではどこのIPアドレスに対して時刻同期を行うか設定します
server [PCのIPアドレス] iburst minpoll5 maxpoll 6
これでどこのIPアドレスの時刻に同期するか指定をします
IPアドレスの後ろはオプションですが,参考文献を見ればわかると思います
次に行うのは,信頼度に関係なく時刻同期を行う設定をします
stratumweight 0
これを書けば,信頼度に関係なく時刻同期を行います
読み込み,実行
これらは設定した後
sudo /etc/init.d/chrony restart
で設定を読み込みます
どちらも,設定して読み込んだ後
ラズパイ側で
sudo chronyc -a makestep
をするとサーバの時刻に強制的に同期します
ですが,何回かしないと時刻同期できません・・・・・
自分は5分ぐらいすると同期出来ました
なぜ,時間がかかるかはわかりません
便利なコマンド
date
コマンドライン上に時刻を表示
chronyc sources
今同期しようとしているサーバ一覧が表示される
chronyc tracking
同期先に関するデータ?が表示される
その他
思い出しながら書いてるので,これだけでできる保証はないです
それに余計なコマンドも書いてるかもしれないですが,とりあえず自分はこれで同期が出来ました
とゆうか,忘れたとき用に書いてるだけですのであしからず
今,デュアルディスプレイと無線キーボードとマウスで作業していますが,快適で買ってよかったです