2016/08/31

[作業記録]Ubuntu on Windows で Autoware を動かしたかった

前回の投稿から引き続き、 Autoware を動かすのに挑戦する。
2016/9/1 追記 : Quick Start の途中でエラーになる。詳細は末尾に追加

環境構築

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key
sudo apt-key add ./ros.key
sudo apt update
sudo apt install ros-indigo-desktop-full ros-indigo-nmea-msgs ros-indigo-nmea-navsat-driver ros-indigo-sound-play ros-indigo-jsk-visualization libnlopt-dev freeglut3-dev qtbase5-dev libqt5opengl5-dev libssh2-1-dev libarmadillo-dev libpcap-dev gksu

ビルド

# 本来は .bashrc とかに追加する
source /opt/ros/indigo/setup.bash

mkdir -p ~/project
cd ~/project
git clone https://github.com/CPFL/Autoware.git
cd Autoware/ros/src
catkin_init_workspace
cd ..
./catkin_make_release

実行(失敗)

# 必要に応じて。
# 本来は .bashrc とかに追加する
source /opt/ros/indigo/setup.bash

cd ~/project/Autoware/ros

Process Manager

(gksudo:9442): Gtk-WARNING **: cannot open display:
./run: 行 41: --geometry=50x10+0+0: コマンドが見つかりません
./run: 行 44: --geometry=50x10+500+0: コマンドが見つかりません
./run
ディスプレイとターミナルがないのでエラー。 方針としては下記。
  1. lxterminal をインストールする
  2. Windows に xserver 立てる

必要な環境を追加

lxterminal

sudo apt install lxterminal

xserver

Xming をインストールする。
インストールするファイルは下記。
  • Xming-6-9-0-31-setup.exe

実行リベンジ

export DISPLAY=localhost:0.0
./run
だめだった...。



文字化けについては、 export LC_ALL=C で回避。
.Xauthority は touch で作ってしまう。 

実行リベンジ

export LC_ALL=C
touch ~/.Xauthority
./run
が、ダメ。



cap_last_cap が権限関係の何からしいので、とりあえずコメントアウトしてみる。
※これで大丈夫な根拠ない。だれかよい方法おしえて...。

実行リベンジ3

# drop_capabilities() をコメントアウトする。
vim ~/project/Autoware/ros/src/util/packages/runtime_manager/scripts/proc_manager.py

こうなった。


内部で roscore が動いているみたいなので実行してみる。

実験

$ roscore
... logging to /home/mikoto/.ros/log/5330c532-6f82-11e6-a03c-74d02b272f3b/roslaunch-MNHOMEWIN-3539.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://MNHOMEWIN:53403/
ros_comm version 1.11.20


SUMMARY
========

PARAMETERS
 * /rosdistro: indigo
 * /rosversion: 1.11.20

NODES

Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/__init__.py", line 307, in main
    p.start()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/parent.py", line 279, in start
    self.runner.launch()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/launch.py", line 654, in launch
    self._setup()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/launch.py", line 630, in _setup
    self._launch_master()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/launch.py", line 394, in _launch_master
    validate_master_launch(m, self.is_core, self.is_rostest)
  File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/launch.py", line 83, in validate_master_launch
    if not rosgraph.network.is_local_address(m.get_host()):
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rosgraph/network.py", line 176, in is_local_address
    local_addresses = ['localhost'] + get_local_addresses()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rosgraph/network.py", line 219, in get_local_addresses
    for iface in netifaces.interfaces():
OSError: [Errno 22] Invalid argument
調べてみると、https://github.com/gavanderhoorn/getifaddrs_preload を導入するとうまくいくらしい。

実行リベンジ4

cd ~/project
git clone https://github.com/gavanderhoorn/getifaddrs_preload
cd getifaddrs_preload
make
export LD_PRELOAD=~/project/getifaddrs_preload/_getifaddrs.so
cd ~/project/Autoware/ros/
./run
動いた。Quick Start を試すのはまた今度。


2016/9/1 追記
Quick Start してみたらうまく動かなかった...。悲しい。

参考資料

[作業記録]Ubuntu on Windows を導入して mintty から操作できるようにする

Autoware という、Linux ソフトウェア動かしたい。 しかし、これを VM で動かすのは厳しいのでは...? との思いから、使えたらラッキーくらいの気持ちで試してみる。

CPFL/Autoware: Open-source software for urban autonomous driving : https://github.com/CPFL/Autoware/

前提条件

  • OS : Windows 10 Home Edition
  • msys2 導入済み

必要な手順

  1. Windows10 Anniversary Update の導入
  2. Windows Subsystem for Linux の有効化
  3. wslbridge のビルド
  4. 起動用の設定

Windows Subsystem for Linux の有効化

Windows10 Anniversary Update を導入していれば、 「Windows の機能の有効化または無効化」から有効化できる。

有効化したうえで、コマンドプロンプトから bash.exe を起動し、インストールを行い、初期設定する。

有効化

  1. 「スタートメニュー右クリック -> プログラムと機能」
  2. ウィンドウ左の「Windows の機能の有効化または無効化」リンクをクリック
  3. 「Windows の機能」の一覧から、「Windows Subsystem for Linux」を探してチェックを入れる
  4. OK 押して再起動
  5. 「スタートメニュー -> 設定 -> 更新とセキュリティ -> 開発者向け -> 開発者モードを選択」
  6. 再起動
  7. コマンドプロンプト

インストール

コマンドプロンプトで C:\Windows\System32\bash.exe を起動する。

Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\Users\mikoto>C:\Windows\System32\bash.exe
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms

続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はあり ません。
詳細: https://aka.ms/wslusers を参照してください
新しい UNIX ユーザー名を入力してください: mikoto
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
インストールが正常に終了しました
環境が間もなく開始されます...
ドキュメントを参照できる場所: https://aka.ms/wsldocs
mikoto@MNHOMEWIN:/mnt/c/Users/mikoto$

初期設定

sudo cp /etc/hosts /etc/hosts.bkup
sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bkup
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
sudo apt update
sudo apt upgrade

Windows Subsystem for Linux の導入は以上。

wslbridge のビルド

windows 側

Bash on Ubuntu on Windows の最高の端末環境らしいので導入する。 msys2 環境を開いてそこで git clone and make.

$ cd /c/Users/mikoto/project/
$ git clone https://github.com/rprichard/wslbridge.git
Cloning into 'wslbridge'...
remote: Counting objects: 156, done.
Receiving objects:  82remote: Total 156 (delta 0), reused 0 (delta 0), pack-reused 156
Receiving objects: 100% (156/156), 54.63 KiB | 0 bytes/s, done.
Resolving deltas: 100% (66/66), done.
Checking connectivity... done.
cd wslbridge/frontend
$ make
mkdir -p ../out
g++ -std=c++11 -fno-exceptions \
        -static -static-libgcc -static-libstdc++ \
        -D_GNU_SOURCE -DWSLBRIDGE_VERSION=0.1.1-dev \
        -Wall -O2 wslbridge.cc ../common/SocketIo.cc -o ../out/wslbridge.exe

Ubuntu 側

sudo apt install git g++ make
cd /mnt/c/Users/mikoto/project/wslbridge/backend/
make

起動用の設定

「wslbridge のビルド」の成果物 wslbridge.exe, wslbridge-backend を Windows のパスの通った場所にコピーする。

ショートカットを作成する。/PATH/TO/mintty.exe -e wslbridge.exe

以上。

参考資料