2022-01-01から1年間の記事一覧

FX自動売買のやり方(楽天証券・無料EA)

MT4というシステムトレード用ソフトを使用した、FX自動売買の方法について説明する。本記事では楽天証券の口座で無料EAを使用して取引を行うことを想定している。 自動売買とは? 自動売買とはその字の通り、FXの売買をシステムが自動で行うことである。自動…

WindowsでOpenCV C++を使用する方法(Visual studio)

Windows Visual studio 2019からOpenCV4.6.0 C++のアプリケーションをビルドして動かす方法です。 やり方を載せているところは無数にあるので、最も簡単に動かすところまで行きたいと思います。 手順 OpenCVのインストール 以下のページから"opencv-4.6.0-vc…

Unityで自己位置推定(OBR SLAM3)やってみた

UnityでOBR SLAM3を動かしてみた。環境はWindows上でUnityを動かし、WSL上でOBR SLAM3を動かしている。 動作としては以下のような感じ。動いてはいるものの、マップ生成は全くうまくいっていない。 youtu.be 前準備 以下に通信用のコード(Linon_SDK)が置いて…

UnityのカメラからC++やPythonへ映像を転送する方法

Unityのカメラから他プロセスへ映像を転送する方法として、以下のような一般的なプロセス間通信が考えられる。 MMAP ソケット通信 RTSP この記事ではこれらの方法を解説する。ただしRTSPはGStreamerのインストール方法ができなかったのでやっていない。 MMAP…

WSLでORB SLAM3を動かす(完成版)

以前ORB SLAM3を動かしてみたが、それを参考に今回はスクラッチでやってみた。これをすべてやれば動くとこまで行くはず。何かエラーがあればコメントまで。 WSL: Ubuntu 20.04 Windows 10 ORB_SLAM3のビルド OpenCVはaptでインストールされるものだとバージ…

WSLでORB SLAM 3をビルド

WSLでSLAMを動かしてみたい、ということでビルドをしてみた。参考にしたサイトではビルドは成功したものの、画面に表示しないサンプルらしく動いているのかわからなかったので、表示されるサンプルを探した。また、画面が表示されない時に設定がおかしいんだ…

WSLにCUDAをインストール Ubuntu 20.04 CUDA 11.7

CUDAのインストールは以下を参考に進めればOK。 CUDA on WSL :: CUDA Toolkit Documentation ただし、以下のようなエラーが発生する場合がある。 $ sudo apt update Get:1 file:/var/cuda-repo-wsl-ubuntu-11-7-local InRelease [1575 B] Get:1 file:/var/cu…

WSL2でGUIアプリ使う

WSL2をインストール VcXsrv Windows X Serverをインストール XLanchを実行して、ディスプレイ番号を0、Additional parameters for VcXsrvに「-ac -nowgl」を指定する。 「Windowsファイアウォールによるアプリケーションの許可」から、VcXsrvにプライベート…

WSL2とWindowsのファイルのやり取りを500MB/sまで高速化した

概要 WSL2でホスト側のディスクへのアクセス速度が遅いので、SSHFSを使用することで読み取りが5MB/s->50MB/sに改善した。 追記: エクスプローラから、WSLに直接アクセスすることで500MB/sまで改善できた。 現状 WSL2ではホスト側のディスク(CドライブとかD…

Windows -> WSL間でMMAPをやろうとしたけどうまくいかなかったので、ファイル経由でデータの受け渡しをした

Windows -> WSL間で画像データの受け渡しをしたかったので、MMAPを使ってプロセス間通信をしようとしたが、結局うまくいかなかった。代替策としてファイル経由でデータの受け渡しをした。RAMDISKを使用したのでそれなりに速度は出る、と思う。 やったこと デ…

他プロセスから操作可能な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はファイルサイズが大きすぎる…