LoginSignup
3
1

More than 5 years have passed since last update.

ROS(×FPGA)のネットワークを構築するためにLANケーブルを直繋ぎする

Last updated at Posted at 2018-12-14

(この記事は「ROSアドベントカレンダー Advent Calendar 2018」の14日目です)

ルータなしでネットワークを構築

Wi-Fi機能はあるけど、PCと繋げるのにいちいち無線ルータを持っていくのは面倒くさい、Wi-Fiだと遅延が酷くてよくわからない、そもそもWi-Fi機能がないボードを使っている、といったことはないでしょうか。

私はZyboZ7-7020ボードを用いて、FPGA×ROSロボット開発を行なっていたのですが、Wi-Fiのデバイスドライバの導入がうまくいかず、LANポートを用いてPCとネットワークを構築していました。

あらかじめ設定しておけば、FPGAボードのLANポートとPCのLANポートを直接繋ぐだけで、

  • FPGA上でからPublishされている各トピックのデータをPCでSubscribeしてデバッグ
  • PCからFPGA上のUbuntuにsshでログインできる

と何かと便利でした。

LANポートの種類によっては、ストレートLANケーブル(普通のLANケーブル)でもできるみたいなので、クロスLANケーブルをお持ちでない方は、まずストレートケーブルでお試しください。

ipアドレスの固定

ボード

sudo nano /etc/network/interfaces
を開いて

/etc/network/interfaces
auto eth0
iface eth0 inet dhcp

dhcpをstaticに変更します。

さらに

/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.2.101
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1

と追記してください。
sudo /etc/init.d/networking restart
でネットワークが再起動するので、
ifconfig
でaddressが192.168.2.101になっていることを確認できればOKです。

PC

まず、ifconfigでLANポートの名前を確認します。eth0以外だったら(enp0s25等)以下のeth0はそれに置き換えてください。

ここからは先ほどと同様に、
sudo nano /etc/network/interfaces
を開いて

/etc/network/interfaces
auto eth0
iface eth0 inet dhcp

のdhcpをstaticに変更します。

さらに、

/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1

と追記してください。
sudo /etc/init.d/networking restart
でネットワークが再起動するので、
ifconfig
でaddressが192.168.2.100になっていることを確認できればこちらもOKです。

ROSの設定

以下はボード側をマスターにする場合です。
(PC側をマスターにする場合はROS_MASTER_URI=http://192.168.2.100:11311としてください)

ボード

nano ~/.bashrc
を開き
以下のようにROS_MASTER_URIとROS_HOSTNAMEを書き換えます

~/.bashrc
export ROS_MASTER_URI=http://192.168.2.101:11311
export ROS_HOSTNAME=192.168.2.101

source ~/.bashrc
でbashを読み込んで設定完了です。

PC

nano ~/.bashrc
を開き
以下のようにROS_MASTER_URIとROS_HOSTNAMEを書き換えます

~/.bashrc
export ROS_MASTER_URI=http://192.168.2.101:11311
export ROS_HOSTNAME=192.168.2.100

source ~/.bashrc

接続

PCとボードを(クロス)LANケーブルで繋ぎます。

PCからボードにssh接続する場合

PC側で
ssh {ボードのユーザー名}@192.168.2.101

ROSの利用

MASTERに設定している方でroscore
あとはネットワークが構築されているので通常通りに使えます。

Zyboで使っていた時に起きた不具合

ボードはカーネルによっては起動時のネットワークが安定しないことがあります。

起動時にネットワークが192.168.2.101にならない場合があるので、その場合はシリアル通信でボードにログインし、sudo /etc/init.d/network restartをしなければなりません。不便ですね...

外部からネットワークアクセスがあると、そちらからのブート待機状態となるため、起動が遅くなる場合があります。

この場合は、シリアル通信でボードにログインし、Ctrl+Cなどでブート待機を強制スキップすることができます。もしくは、LANケーブルを抜いておくことによって回避できます。

ネットワークの利用には電力を消費するため、ボードが急に落ちることがあります。

電力が足りずに落ちてしまう場合、電力供給を見直す必要があります。

参考サイト

Ubuntuのパソコン同士で通信する方法 - ノートにメモ書き

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1