Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

(この記事は「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のパソコン同士で通信する方法 - ノートにメモ書き

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした