iPX社員によるブログ

iPX社員が"社の動向"から"自身の知見や趣味"、"セミナーなどのおすすめ情報"に至るまで幅広い話題を投下していくブログ。社の雰囲気を感じ取っていただけたら幸いです。

クレイジー・エイッツと公正な文化

f:id:ipx-writer:20190529154956j:plain
CSX 8888 (Stanley Yard, OH)

今回のiPXブログ担当のベーカーです。今回のストーリーはちょうど18年のことでした。

2001年5月15日のウォルブリッジ村が風のない、晴れている日でした。オハイオ州だから、5月にもちょっと寒かったですが、爽やかでした。
こんな平凡な景色に「CSX 8888」というディーゼル列車が47車両を引いて、村にある操車場を出ました。

CSX 8888に乗っているのは有害化学物質。乗っていないのは…運転手。

「クレイジー・エイッツ」と呼ばれている恐ろしい暴走列車大事件が既に始まりました。

でも、ウィキペディアで調べたら、事件の原因が「オペレータエラー」 ですが、その「オペレーター」が口頭注意さえ受けないで、事項報告書に名前が載っていません 。僕にとってこれがクレイジー・エイッツ事件の最も面白いところかもしれません。なぜそうなったかが今回のブログの出発点として使いたいと思います。

続きを読む

2019年5月大型連休も終了

こんにちは、iPXの須山です。

今年も春の大型連休が終わり、5月も中旬になりましたね。

今回、春の大型連休中の世間の目玉? は連休中に改元が行われた事ではないでしょうか。
自分はそこまで気にはしていなかったですが、
このような仕事をしていると これに関連するシステム改修が行われたりしているのが
ニュース等で流れていると 目に留まりました。

f:id:ipx-writer:20190518022131j:plain
連休明けすぐに 届けられた水道料金の請求書です。
ちゃんと 発行日等の日付が「令和」になっています。

平成が31年で終わりましたが、せっかくですのでこの平成の間に
システム改修という観点以外にも少なからず 日常生活に影響がある出来事を
個人的にいくつかピックアップしてみました。

続きを読む

気になる交通標識のお話

どうもご無沙汰しております。
iPXのishizawaです。

GWは浜松の方まで遊びに行ってきました。
もちろん自前のMT車で。
片道約400kmなので往復800km、特に東名の渋滞がしんどいですね。。。
渋滞を避けるために深夜や早朝に移動してもハマるもんですね。

さて、今回は高速道路を走っていてこの標識は…と思った交通標識についてお話しようと思います。
例えばこれ

f:id:ipx-writer:20190513185123p:plain
f:id:ipx-writer:20190513185143p:plain

見たことはあるし、坂道なんでしょ?と分かると思いますが%で書かれてますよね。
実際、どの位の勾配なのか知っている人は少ないのではないか?と思い、うろ覚えな標識に関する記事にしてみました。

続きを読む

UE4で強化学習環境を動かし、学習状況を可視化する(Part1)

前書き

お久しぶりです。iPXのabikoです。
最近急激に気温が上がり、真夏日を記録する所も出てきました。
近年春といえるような過ごしやすい日が少なくなっていることを寂しく感じます。
今後も気温の変動が激しそうです、皆さんお体に気をつけてお過ごしください。

今回の記事は

今回はUnrealEngeie4(以下UE4)と強化学習を組み合わせた記事にしたいと思います。
ずばり、UE4強化学習環境(CartPole)を動かし、学習状況を可視化する、です。

※といいながら、学習自体は行いません。可視化がメインです。
 強化学習環境にはOpenAI Gymを使用し、行動はランダムで与えます。

事の始まり

最近ではUE4機械学習に触れる機会が多くなりました。
そんな中、社内で「UE4ってPythonで書けないんですかね?」という話題が。

気になって調べてみると「UnrealEnginePython」というOSSプラグインを発見しました。
GitHub - 20tab/UnrealEnginePython: Embed Python in Unreal Engine 4
下記のページを見るに、Pythonコードにてアクターの座標移動まで実現できています!
UE4でPythonを使ってみる - Qiita

キューブが天に上っていく様子を見て、私の頭の中では下図が再生されました。

f:id:ipx-writer:20190506195722g:plain
CartPole

そう、かの有名なCartPoleです。機械学習の多くはPythonで書かれています。
Pythonで記述でき、ゲームプレイ時にキューブを動かすこともできるのであれば、UE4上で強化学習を実行するに止まらず、その学習状況の可視化もできてしまうのでは!と思い立ったのです。

それでは、さっそく試していきます。

準備の前に...

今回UE4および、Pythonのインストールについては割愛します。

参考

それぞれ下記のページからダウンロードすることができます。
UE4
www.unrealengine.com
Python
www.python.org

使用環境

OS WIndows 10
UE4 4.21.2
Python 3.6.6
UnrealEnginePython 20181128 Binary Releases

UnrealEnginePythonについて、当初はPythonが同梱(embedded)されているもので試してみたのですが、pipでエラーが出るなど苦戦したため、非同梱版を使用するようにしました。
→UnrealEnginePython_20181128_4_21_python36_win64.zip

そのため、Pythonを端末内に別途用意します。
今回は公式ページからダウンロード・インストールしたPythonを使用しています。

Pythonの下準備

UnrealEnginePythonのPython同梱版を使用しない場合、環境変数のPATHにインストールされているPythonのパスを設定する必要があります。
Pythonをデフォルトでインストールした場合には下記のパスを設定します。

C:\Users\****\AppData\Local\Programs\Python\Python36
C:\Users\****\AppData\Local\Programs\Python\Python36\Script

続いてコマンドプロンプトを起動してOpenAI Gymをインストールします。

$ pip install gym

UnrealEnginePythonをUE4プロジェクトに適用

UnrealEnginePythonプラグインをプロジェクトに適用する手順が下記になります。

1.空のブループリント(BluePrint=以下BP)プロジェクトを作成
f:id:ipx-writer:20190506200032p:plain
2.作成したプロジェクトルート直下にPluginsフォルダを作成
f:id:ipx-writer:20190506200051p:plain
3.UnrealEnginePythonプラグインをダウンロードして解凍
Releases · 20tab/UnrealEnginePython · GitHub
→「20181128 Binary Releases」の「 UnrealEnginePython_20181128_4_21_python36_win64.zip」をダウンロード

4.解凍結果のフォルダ配下にある「UnrealEnginePython」フォルダを「2. 」で作成したPluginsフォルダに配置
f:id:ipx-writer:20190506200111p:plain

5.プロジェクトを起動
Python環境変数が正しく設定されていない場合、起動時にエラーとなる

6.ウィンドウ>Python Editor のメニューが表示されていることを確認
f:id:ipx-writer:20190506200150p:plain

これでUnrealEnginePythonを使用する準備ができました。

UE4で可視化したいコード

今回UE4で実行&可視化したいコードはこちらになります。

import gym
env = gym.make('CartPole-v0')

for episode in range(50):
    observation = env.reset()
    done = False
    while not done:
        env.render()
        action = env.action_space.sample()
        observation, _, done, _ = env.step(action)

次の行動(右・左)をランダムに与え続けるコードになっています。

参考

CartPole環境の詳細についてはこちらを参照してください。
CartPole v0 · openai/gym Wiki · GitHub

Python Editorの動作確認

上記コードをPython Editorで実行してみます。

1.「ウィンドウ>Python Editor」を押下し、Python Editorを起動
2.上部メニューの「New」を押下してスクリプトファイルを作成
3.右下のエディタ部に上記コードをペースト
4.「Save」を押下して保存
f:id:ipx-writer:20190506201127p:plain
※Ctrl+S での保存が効きません。
 本格的に使用していく場合、VSCodeなど別のエディタを使ったほうがよさそうです。

※また、ソースコードに変更を加えたり、新たにファイルを追加した場合に下図のようなメッセージが出ます。「インポート」を押下し更新を反映しておきます。
f:id:ipx-writer:20190506201210p:plain

5. 「Execute」を押下し、コードを実行

f:id:ipx-writer:20190506203508g:plain
CartPole
無事実行できました!

次回

ここまでで一旦休憩です。
次回以降、ゲームプレイによって動作するコードに書き換え、状況を可視化できるように仕立てていきます。

それではまた、お会いしましょう。

国際社会と思わずの攻撃

「サンキュー!」

それを聞いた僕がドアを開けたままに一瞬フリーズしました。
良かったことに、セリフを言ってくれた方が一回も振り向かずに通って、僕がすごくムッとしている顔が誰にも見られなさそうでした。

しかし何で腹が立ったの?僕が客先で食堂のドア開けた時に後ろの所員さんを先に通した。【通っていた小学校は「先にドアに着いた者は最後に通る」のようなルールがあって、嫌でも一生についてしまったみたい(汗)】 それにお礼されただけでした。皮肉などもなかったから、お礼にムカつく権利がないはずです。それはわかってもムカつきました。それはわかったのでムカつきました。

今回のiPXブログ担当のベーカーです。今回のテーマが個人的でちょっと暗いかもしれないですが、よろしくお願いします。

続きを読む

WindowsのVisual Studio Code上でC++環境セット

どうも、iPXのパルハットです。最近業務で機械学習関連の案件にかかわることが増えています。その場合プログラム言語として主にPythonを使っていましたが、TensorRT、ROS等を用いる場合にはC++も登場しますので、使う機会しばしばあります。最近、個人のWindowPCにC++を実行できる環境のセットアップしてみました。そこで今回のブログにその設定手順を乗せることにしました。エディタはVSCodeを使用しています。

MinGWのインストール

MinGW(Minimalist GNU for Windows)GNUツールチェーンのWindows移植版です。

インストール手順

  1. MinGWをダウンロードしてから、インストーラを実行します。デフォルト設定を従ってインストールをします。f:id:ipx-writer:20190504184025p:plainf:id:ipx-writer:20190504184424p:plainf:id:ipx-writer:20190504184451p:plain
  2. 表示された画面からインストールするパッケージを選択して、メニューからinstallation->ApplyChangesをクリックします。以下が最小限の選択項目です。
    1. mingw-developer-toolkit-bin
    2. mingw32-base
    3. mingw32-gcc-g++
    4. mingw32-gdb-binf:id:ipx-writer:20190504185132p:plainf:id:ipx-writer:20190504185149p:plainf:id:ipx-writer:20190504185337j:plain
  3. 表示された画面のApplyをクリックすると変更項目でシステム構成が更新されます。最後の画面のcloseをクリックしてインストールを終了します。f:id:ipx-writer:20190504185553p:plainf:id:ipx-writer:20190504185603p:plainf:id:ipx-writer:20190504185613p:plain

Visual Studio Codeのインストール

Visual Studio Codeマイクロソフトによって開発されたプログラムソースコード用のエディタです。

インストール手順

  1. VSCodeをダウンロードしてから、インストーラを実行します。デフォルト設定を従ってインストールをします。f:id:ipx-writer:20190504190204p:plainf:id:ipx-writer:20190504190213p:plainf:id:ipx-writer:20190504190244p:plainf:id:ipx-writer:20190504190254p:plainf:id:ipx-writer:20190504190308p:plainf:id:ipx-writer:20190504190326p:plainf:id:ipx-writer:20190504190336p:plainf:id:ipx-writer:20190504190917p:plain
  2. VSCodeがエディタの設定
    1. c/c++Extensionの設定f:id:ipx-writer:20190504190805p:plain
    2. Code Runnerの設定f:id:ipx-writer:20190504191021p:plain
    3. テストコードを実装, エディタの上でマウスの右をクリックして、Run Codeをクリックして実装します。f:id:ipx-writer:20190504191247p:plainf:id:ipx-writer:20190504191334p:plain
  3. コードがちゃんとコンパイルできたことが確認できます。VSCodeターミナルからtest.exeのファイルが作成されたことが確認できます。これで環境のセットアップが終了になります。場合によって文字化けが発生したり、C++の環境パスが設定されなかったり等をありますので、注意してください。f:id:ipx-writer:20190504191919p:plain

まとめ

業務でLinuxPCを使っているので、C++コードが普通にコンパイルできていました。しかし、個人PCでもたまにテスト、調査などをやる時が発生しますので、今回がその手前として環境セットアップをしてみました。