ROSではノード間の時刻の同期が必須であり、インターネット経由で公的機関の標準時刻に同期をとるのは一般的。ROS公式ではchronyのインストールがすすめられている。RTCモジュールがつかないボードには、常時インターネット接続でないロボットに、RTCモジュールを追加してロボットの電源が切れても時刻を保持する必要がある。以下仮にRTCモジュールがすでに存在した前提で、ntpでROSマスタとしてのNTPサーバーの設定と時刻合わせしていきましょう。
$cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS" $sudo apt-get -y install ntp $sudo nano /etc/ntp.conf server ntp.nict.jp broadcast [client IP address] $sudo /etc/init.d/ntpd restart $sudo /etc/init.d/ntp status * NTP server is running $sudo /etc/init.d/ntpd stop * Stopping NTP server ntpd [ OK ] $sudo ntpdate ntp.nict.jp 12 Dec 14:48:58 ntpdate[1857]: adjust time server ntp.nict.jp offset -0.031820 sec $sudo /etc/init.d/ntpd start * Starting NTP server ntpd [ OK ]
RTCモジュールが時間とともに、時刻のドリフトが必ず発生してしまうので、年間秒単位のドリフト望ましいが、難しい問題である。解決策の一つとして、手間かかるが、定時的にインタネットに接続しておき、公的機関の標準時刻に同期する方法がある。
以上