他プロセスから操作可能なUnity物理シミュレーション環境作った

はじめに ディープラーニングで物体検出など使えるようになってくるとシミュレーション環境で動かしたいと思うのだが、よさそうなSWが見つからなかった。それなら作ればいいじゃないかということで作った。 実際に動いている画面は以下の通り。 youtu.be 制…

クイックスタート

今回は白線に沿って自動で走行する車を作ったのでそれを動かしていく。 このページに直接来た方は以下を参照。 Pythonから操作可能な物理シミュレーション環境作った - ぼうびろく Unityの準備 以下からインストーラーを入手し、Unityをインストールする。Un…

Linuxのudevについて

Linuxでは各種デバイス(HDDとか)はデバイスファイル(/dev下にあるファイル)として存在し、各種デバイスをファイルとして扱うことができる。(このファイルのどうやって扱うのかは、デバイスドライバによって定義されている。)このデバイスファイルを操…

Unityで距離測定器(Raycast)

Raycastでオブジェクトの距離を計測してみた。ただこれだけではほかにもやっている人が大量にいるので、複数の距離計測機から情報を1つにまとめられるものも作った。 マニュアルは以下のページ。 Physics-Raycast - Unity スクリプトリファレンス イメージと…

Python SpyderでPlotウィンドウにグラフが出なくなった時

Python Spyderを使用していた際に、以下のようなWarningが出て、Plotsウィンドウにグラフが表示されなくなった。 UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. この時対処法としては以下の2つ。…

実験メモ_0611

PID制御のDゲインを変化させて実験してみた記録。PID制御はステアリングに用いていいる。 ほかのパラメータは以下の通り。 P=0.5 I=0.05 コースは以下のような円形コース。 このコースを1周走らせたときの、PID各操作量と合計操作量U, 白線中央からのずれx, …

自動運転開発_試作

試作ができたので試運転してみた。コースとしては一周ぐるっと回るようになっているのみ。映像から白線を認識して、白線中央を走るようになっている。カーブでは一部認識間違いが起きているものの、他の認識部分でカバーできている。白線検出は2値化×エッジ…

PythonでPID制御

PythonでPID制御のクラスを作っていろいろパラメータを変えてみた。 PID制御については以下を参照。 PID制御 - Wikipedia 式は以下の通り。 ポイントだけ説明すると、 目標値に対する偏差から操作量を計算する、フィードバック制御の1つ 操作量はP(比例)、…

PythonでTCPの双方向通信をしてみた

表題の通り。Pythonでソケット通信をする場合はsocket.socketを使用する。TCP通信を行う場合は、一方をLISTENにして、もう一方からconnectで接続してから通信を行う。(UDPの場合は接続なしでデータを送受信すればいい。)作ったクラスは以下の通り。 from s…

オブジェクトの位置をリセットするボタンを作る(Unity)

HierarchyにUI→Buttonでボタンを作る。 ボタンにスクリプトをアタッチして、以下のように記載する。クラス名は自分が作ったものを使う。using UnityEngine.UI;は忘れがちなので注意。Start()で初期位置を取得しておいて、クリックされた際にその位置に戻す。…

車を作る(Unity)

Unityで自分で操作できる車を作ってみる。基本の部分はUnity公式のチュートリアルを参考にした。 Wheel Collider チュートリアル - Unity マニュアル 今後物体検出などを行っていきたいので、実際の車っぽいものを走らせたいので以下のアセットを使用する。 …

札幌から那覇までの最短経路を求める(グラフ理論)

グラフ理論の勉強として、札幌から那覇までの最短経路を求める。条件としては以下の通り。 都市間の距離は直線距離を使用する。 各都市は最も近い3都市と接続する。 今回の計算は以下のページを参考にした。 グラフ理論の基礎 - Qiita まず初めに都市名、緯…

無料で使えるUnity道路作成用アセット

EasyRoads3D assetstore.unity.com EasyRoads3Dは複数の点をつなげていき、道路を生成するアセット。自由にカーブなどを簡単に作ることができる。有料版を購入すると分岐も作成可能。 道路の見た目 編集画面 使い方 【入門】レースゲームの作り方&Unityの使…

白線認識開発

自動運転では当たり前ではあるが道路を走ることが必要である。ここで道路とはどのような領域化といえば、白線に挟まれた領域である。そのため、第一歩として白線認識手法の開発を行う。 今回は外乱の殆ど無い環境、つまり画像内に白線しかないような状況での…

ディープラーニング環境構築のためのローレベルな基礎知識

昨今ディープラーニングはライブラリやサービスも非常に充実し、だれでも簡単に扱えるものになった。それこそGoogle Clabなどを使えば環境構築なしでも使えるようなサービスもある。ただ本格的に使ってみるとCUDAやらTensorFlowやら多くのソフトウェアを使っ…

自動運転シミュレータを作る

ディープラーニングの知識もそこそこ得られてきたのでアウトプットとして何かをしたい。ただ日常生活で使える場所なんてほとんどない。ならば作ればいいじゃないかと思い立ち、自動運転シミュレータを作ろうと考えた。 構想 構想としては以下の図のような感…

Unityのカメラ映像をPythonで受け取る方法

はじめに Unityのカメラ(プレイヤー視点の映像とか)の映像をPythonで受け取る方法を調べた。方法としては以下のようなものがあった。 UnityCam, UnityCaptuerを使用する RTSPで飛ばす 共有メモリで受け渡す UnityCam, UnityCaptuerを使用する 調べた中では…

mmapで画像ファイルの読み出し方法

mmapで画像ファイルの読み出し方法は以下のようにする。SharedMemoryTest.batはmmapで使っているファイル。 from PIL import Image import mmap with open("c:\\SharedMemoryTest.bat", "r+b") as f: mm = mmap.mmap(f.fileno(), 0) #ファイルの内容を読み出…

torch.hub.loadでImportError: cannot import name 'amp'というエラー

Pythochにはtorch.hubという超簡単に物体検出などができる機能がある。コードはこれだけ。 import torch model = torch.hub.load('ultralytics/yolov3', 'yolov3') input_img = 'https://ultralytics.com/images/zidane.jpg' # 推論 results = model(input_i…

mp4からPythonで文字起こし

mp4動画からPythonで文字起こししてみた。探せばやり方は山ほどあるので、今回はより実用的に、どんなデータでも使えるよう工夫してみた。 課題 Python で文字起こしするには、recognize_googleを使うのが一般的。ただしこのAPIはファイルサイズが大きすぎる…

一人暮らしの引越し購入家具・家電まとめ

はじめに 最近引っ越しをしたので、購入した家具・家電の値段と感想をまとめました。よかったら参考にしてください。 プロフィール 性別:男性 年齢:アラサー 仕事:リモートワーク中 間取り:1LDK 費用概算 家具:15万円 家電:20万円 家具はすべて楽天で…

PyTorchでGPUが使えない

Docker でPyTorchを環境構築して、CUDAを使用しようとしたら使えなかった。(PyTorch自体は動く、過去のバージョンでも動く) Dockerは以下のもの。 pytorch/pytorch:1.10.0-cuda11.3-cudnn8-devel 出ている警告は以下の通り。どうやらGPUが対応していないら…

Shape tuple is incompatible with dataというエラー

以下のコードでhdf5ファイルに保存しようとしたとき、 with h5py.File('../data/data_2.hdf5', "w") as f: group_img = f.create_group('/img') group_ann = f.create_group('/ann') for dire in tqdm.tqdm(sorted(glob.glob("../data/train_videos/*"))): d…

PyTorchのDataloderでエラー(DataLoader worker (pid(s) *) exited unexpectedly)

PyTorchのDataloderのWorkerを大きくして実行しようとしたら、以下のようなエラー。 RuntimeError: DataLoader worker (pid(s) *) exited unexpectedly 原因としては共有メモリの不足。特にDocker環境だとホストで実行している場合よりも共有メモリが少ない…

SIGNATEコンペ(SUBARU 画像認識チャレンジ) データ変換

SIGNATEコンペ用にデータ変換用のプログラムを作成したので、メモっておく。 与えられるデータは、ステレオカメラの動画、視差画像、速度、ハンドル角度、車間距離などがある。自分は視差画像から車間距離と相対速度をよそくするNNをつくるので、それに関す…

Jupyterからいれたはずのモジュールが使えないときの解決策

PyTorchをJupyterから使おうとしたものの、下記のようなエラーが出てしまう。 import torch ImportError: No module named torch ただ、PyTorch自体はインストールしたし、Pythonコンソールからは使える。 # python Python 3.7.9 (default, Aug 31 2020, 12:…

Minecraft Mod対応マルチサーバ 構築(ver 1.16.3) (Ubuntu 20.04)

Minecraft Mod対応マルチサーバーを立てようと思ったが、情報が古いものばかりであったので補足として書いておく。 結論としてはJavaのバージョンに気を付けること。 事前準備 Minecraft Forgeのインストールまでやっておく。ここまでは他のサイトを見て進め…

WindowsでKafka+Node red(動作確認)

前回Windows上でKafka+Node redのセットアップを行ったので、今回は動作確認を行った。 起動 前回作成したKafkaとNode redのコンテナを起動する。Docker for windowsを起動して、左のほうの「Containers/App」からKafkaとNode redのStartボタンを押す。コン…

WindowsでKafka+Node red

初めに WindowsでKafka を使用するためにセットアップを行った。また動作確認を行うためにNode redのセットアップも行なった。結論としてDockerで使うやり方が一番簡単だった。 準備 Docker のインストール DockerはそもそもLinuxでしか動かないソフトウェア…

k-means法でホロライブのサムネ傾向分析してみた

はじめに k-means法によるクラスタリングを勉強したので、それを使ってホロライブの各ライバーのサムネの傾向分析をしてみた。ここで言う傾向分析とは、サムネをk-means法によってクラスタリングし、各ライバーが各クラスのサムネをどのような割合で作ってい…