sgunji’s blog

ものづくりやプログラミングなど…最近はXamarinを少々

マルチプラットフォームのための OpenGL ES入門 基礎編 Android/iOS 対応グラフィックスプログラミング

マルチプラットフォームのためのOpenGL ES入門 基礎編 Android/iOS 対応グラフィックスプログラミング

目 次

第1章 最初に知るべきOpenGL ESの基礎知識

1.1 OpenGLとは何なのか

1.2 OpenGL ESのバージョン

1.3 ベンダー拡張

1.4 利用方法

1.5 GPUごとの能力

第2章 OpenGL ESのプリミティブ型

2.1 C言語Java言語での型

2.2 型の対応付け

2.3 符号無し整数

第3章 Android版のセットアップ

3.1 サンプルプログラムの入手

3.2 必要なソフトウェアのダウンロード

3.3 JDKのインストール

3.4 Android SDKをインストールする

3.5 SDKのアップデート

3.6 NDKのインストール

3.7 Eclipseのセットアップ

3.8 プロジェクトのインポート

3.9 実機へインストール

第4章 iOS版のセットアップ

4.1 Xcodeのインストール

4.2 サンプルプロジェクトの起動

4.3 実機インストールの準備

第5章 Hello OpenGL ES 2.0!!

5.1 初期化処理

5.2 AndroidOpenGL ES 2.0利用方法

5.3 iOSOpenGL ES 2.0利用方法

5.4 サンプルアプリについて

5.5 スケルトンプログラム【sample_skelton.c】

5.6 単色で塗りつぶす【sample_clear.c】

5.7 描画フレームを意識する【sample_random_clear.c】

5.8 OpenGL ESのパラメータ保存先

第6章 三角形の事始め

6.1 頂点とはなにか

6.2 三角形描画の準備【sample_rendering_triangle.c】

6.3 描画を行う

6.4 Viewportの変更に備える

6.5 後処理を行う

6.6 シェーダー初期化の簡略化

6.7 まとめ

第7章 三角形以外のプリミティブ

7.1 線を描画する【sample_rendering_line.c】

7.2 点を描画する【sample_rendering_point.c】

7.3 多角形を描画する【sample_rendering_quad.c】

7.4 まとめ

第8章 シェーダーの基礎

8.1 塗りつぶしの色を変更する【sample_shader_uniform_color.c】

8.2 シェーダースペックの注意点

8.3 頂点を動かす【sample_shader_uniform_pos.c】

8.4 頂点に位置情報以外の情報を付与する【sample_shader_varying_color.c】

8.5 まとめ

第9章 テクスチャの基礎

9.1 Textureとは

9.2 テクスチャ座標系とUV

9.3 テクスチャを作成する【sample_load_texture.c】

第10章 テクスチャ用のパラメータ

10.1 UV範囲を変更する【sample_load_texture_uvrange.c】

10.2 テクスチャのラッピング【sample_texture_op_wrap_repeat.c】

10.3 テクスチャのフィルタ

10.4 Mipmapの問題点【sample_texture_op_mipmap_GL_LINEAR_MIPMAP_LINEAR_ex.c】

10.5 NPOTテクスチャを利用する【sample_texture_op_npot.c】

第11章 複数枚のテクスチャを利用する

11.1 複数枚のテクスチャを読み込む【sample_texture_use_2.c】

11.2 テクスチャ読み込みの関数化

11.3 描画ごとに異なるテクスチャユニットを利用する【sample_load_texture_2unit.c】

11.4 同時に複数のテクスチャユニットを利用する

第12章 スプライト描画

12.1 スプライトとはなにか

12.2 スプライトの座標系 282

12.3 スプライト描画の前提条件

12.4 任意の座標に四角形を描画する【sample_rendering_pixel_quad.c】

12.5 テクスチャアトラスを描画する【sample_rendering_textureatlas.c】

第13章 シェーダーと行列

13.1 行列とは

13.2 単位行列(Identity)

13.3 移動行列(Translate)

13.4 拡大縮小行列(Scale)

13.5 回転行列(Rotate)

13.6 行列の乗算

13.7 行列を使ってシンプルなシェーダーの処理を行う【sample_rendering_matrix_translate.c】

13.8 補助関数:mat4_translate

13.9 拡大縮小行列でポリゴンの拡大縮小を行う【sample_rendering_matrix_scale.c】

13.10 補助関数:mat4_scale

13.11 回転行列でポリゴンの回転を行う【sample_rendering_matrix_rotate.c】

13.12 複数の行列を適用する【sample_rendering_matrix_trs.c】

13.13 行列の転置

13.14 乗算済みの行列を利用する【sample_rendering_matrix_mult_trs.c】

13.15 まとめ

第14章 行列の実践的な利用(2D編)

14.1 行列を利用してスプライト座標への変換を行う

14.2 ポリゴンの位置を任意のスプライト座標へ変換する【sample_rendering_matrix_sprite.c】

14.3 ポリゴンの回転を行う【sample_rendering_matrix_spriterotate.c】

14.4 アスペクトの歪みを補正する【sample_rendering_matrix_spriterotate_aspect.c】

14.5 UV座標用の行列を生成する【sample_rendering_matrix_sprite_uv.c】

第15章 高度なテクスチャ利用

15.1 ブレンドの有効化【sample_blend_enable.c】

15.2 圧縮テクスチャ

15.3 圧縮テクステャ:ETC1

15.4 Adreno Texture Toolで圧縮を行う

15.5 KTXファイルからMipmap付きのETC1テクスチャを読み込む【sample_load_compress_texture_etc1_ktx.c】

15.6 圧縮テクステャ:PVR

Office2016でMicrosoft Mathematics Add-In

まずはこれを見よう
www.mrseanong.com


Microsoft Mathematics Add-Inは
www.microsoft.com

落としてきたら,コマンドプロンプトを開いて
ダウンロードした実行ファイルに

edumathaddin_ja-jp_32bit.exe /extract

っやると,どこのフォルダに展開する?って聞かれるので,
適当なフォルダに展開してください.

Office 2016 32bitの場合

msiexec /i <さっきの展開したフォルダ>\edumathaddin_x86.msi fromsetup=1 word=1 onenote=1 ALREADYRUNNING=0 DOTNET4=1


Office 2016 x64の場合

msiexec /i <さっきの展開したフォルダ>\edumathaddin_x64.msi fromsetup=1 word=1 onenote=1 ALREADYRUNNING=0 DOTNET4=1

ってやる.

最後に

<さっきの展開したフォルダ>\dxsetup.exe 

ってやる.

ちなみに2010はこっち。
www.microsoft.com


以上!!

macOSで画面を音声付きで録画する

SoundflowerとQickTimeを使えばOK

以下から、macOS Mojave で使えるSoundflowerを落としてくる
github.com

そのままインストールできないので、
まず環境設定からプライバシーとセキュリティを選択して
左下の鍵を開けておく。
f:id:sgunji:20190522155628p:plain

それからインストールすると
1回失敗します。
環境設定からプライバシーとセキュリティを再度選択して開くと
以下のようにメッセージが出ているので許可を選択
f:id:sgunji:20190522172505p:plain

そうすれば
うまくいくはず。

インストールされたら
環境設定からサウンドを選択して
Soundflowerを選ぶ。
f:id:sgunji:20190522155244p:plain

あとは、QuickTimeを開いて
f:id:sgunji:20190522155250p:plain

マイクの設定でSoundflowerを選べばできる。
f:id:sgunji:20190522155347p:plain


ただ、サウンドの出力にSoundflowerを選んでいる間は
内臓スピーカーからは何も音声が出ない。
以下のサウンドミキサーを入れる

LadioCast

LadioCast

  • Yosirou Sawayanagi
  • エンターテインメント
  • 無料

Jetson TX2でOpenCV3.4.0のセットアップから,ROSのインストール・ORB_SLAM2のインストールまでやってみよう!(編集中)

目標

github.com
www.youtube.com

これをやる。

Jetson TX2でOpenCV3.4.5のセットアップから
ROSのインストール
ORB_SLAM2のインストールまでやってみよう!

nvidia sdk manager(0.9.11.3405)では,OpenCV3.3.1が標準でインストールされる。
最近のJetPackは全部そう。

ただ,nVidia的には,動作がうまくいかないコアがあるので,
ライブラリは全部含めていないらしい。Gstreamerとか入ってない。
OpenCVでcudaがまともに動かせないのはこのせいなので,自分でビルドしなければいけません。

環境はこちら
Jetpack 4.2
Jetson TX2
Ubuntu 18.04 LTS

参考にしたのはここ。最新のJetpack4.2でもビルドできた。
jkjung-avt.github.io


jetpackからインストールしたopencvを消す。

sudo apt-get purge libopencv*

邪魔なライブラリも消す。

sudo apt-get purge python-numpy

autoremoveで依存関係ないもの消しちゃう

sudo apt autoremove

updateでパッケージを更新して

sudo apt-get update

これからビルドしようとしているOpenCVgccなりgppが5系のものが必要なので,
とってくる。

sudo apt-get install  g++-5 cpp-5 gcc-5

これからビルドしようとしているOpenCVによって6系が必要かもしれないので,
とってくる。

sudo apt-get install -g++-6 cpp-6 gcc-6

OpenCVで使いそうなライブラリとかビルド環境を落としてくる。

sudo apt-get install -y build-essential make cmake cmake-curses-gui g++ libavformat-dev libavutil-dev libswscale-dev libv4l-dev libeigen3-dev libglew-dev  gtk2.0-dev

GStreamerとかも落とす。(商用利用するかたはライセンスに注意)

sudo apt-get install -y libdc1394-22-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

### Install additional dependencies according to the pyimageresearch
### article
ほかにもいろいろ落とす。

sudo apt-get install -y libjpeg8-dev libjpeg-turbo8-dev libtiff5-dev libpng-dev libavcodec-dev
sudo apt-get install -y libxvidcore-dev libx264-dev libgtk-3-dev  libatlas-base-dev gfortran
sudo apt-get install -y libopenblas-dev liblapack-dev liblapacke-dev

libpng12-devって書いてるサイト多いけど(2019/05現在),
libpng-dev に名前変えたらしいよ!

Qt5とか

sudo apt-get install -y qt5-default vim

Pythonとか

sudo apt-get install -y python3-dev python3-pip python3-tk
sudo pip3 install numpy
sudo pip3 install matplotlib

あれvim入れたっけ。
まあいいや

sudo vim /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc

最近のは3.6とかなので,

sudo vim /usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/matplotlibrc

で開いて
41行目あたりを

backend      : TkAgg

にする。
お次は,Python2

sudo apt-get install -y python-dev python-pip python-tk
sudo pip2 install numpy
sudo pip2 install matplotlib

同様に,

sudo vim /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc

で開いて
41行目あたりを

backend      : TkAgg

libGL.so.をシンボリックリンクしなさいってかいてあるけど,
やんなくて大丈夫
ただし,/usr/local/cuda/include/cuda_gl_interop.hはいじらないとダメ

 sudo vim /usr/local/cuda/include/cuda_gl_interop.h

とりあえず開いて
62~68行目あたりくらいをコメントアウトする。

//#if defined(__arm__) || defined(__aarch64__)
//#ifndef GL_VERSION
//#error Please include the appropriate gl headers before including cuda_gl_interop.h
//#endif
//#else
 #include <GL/gl.h> //<-これだけ残して他はコメントアウト
//#endif

今回はお手本には従わず
OpenCV3.4.5にチャレンジ

qiita.com

任意のフォルダを作成しOpenCVをダウンロード!

mkdir -p ~/src
cd ~/src

OpenCVの本体を

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout -b v3.4.5 3.4.5

っていうようにgit cloneすると時間がかかるので,直接の方がよいと思います。

wget https://github.com/opencv/opencv/archive/3.4.5.tar.gz  -O opencv-3.4.5.tar.gz  
tar -zxvf opencv-3.4.5.tar.gz  
mv opencv-3.4.5/ opencv/

Opencv_extraをgitcloneするなら

git clone https://github.com/opencv/opencv_extra.git
cd opencv_extra
git checkout -b v3.4.5 3.4.5

あああ

wget https://github.com/opencv/opencv_extra/archive/3.4.5.tar.gz  -O opencv_extra-3.4.5.tar.gz  
tar -zxvf opencv_extra-3.4.5.tar.gz
mv opencv_extra-3.4.5/ opencv_extra/

Opencv_contribを

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_extra
git checkout -b v3.4.5 3.4.5

下の方が早いかも

wget https://github.com/opencv/opencv_contrib/archive/3.4.5.tar.gz  -O opencv_contrib-3.4.5.tar.gz  
tar -zxvf opencv_contrib-3.4.5.tar.gz  
mv opencv_contrib-3.4.5/ opencv_contrib/

CUDA_ARCH_BINの指定は,
TX2なら6.2
TX1なら5.3

cmakeの前にコンパイラgcc-6とg++-6をあてる。
github.com

ちなみに

CMAKE_INSTALL_PREFIXは
ORB-SLAM2をみると
/usrみたいなので注意が必要(たぶん)

cd ~/src/opencv
mkdir build
cd build

CC=gcc-6 CXX=g++-6 cmake \
        -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr \
        -D BUILD_CUDA_STUBS=OFF \
        -D BUILD_DOCS=OFF \
        -D BUILD_EXAMPLES=OFF \
        -D BUILD_JASPER=OFF \
        -D BUILD_JPEG=OFF \
        -D BUILD_OPENEXR=OFF \
        -D BUILD_PACKAGE=ON \
        -D BUILD_PERF_TESTS=OFF \
        -D BUILD_PNG=OFF \
        -D BUILD_SHARED_LIBS=ON \
        -D BUILD_TBB=OFF \
        -D BUILD_TESTS=OFF \
        -D BUILD_TIFF=OFF \
        -D BUILD_WITH_DEBUG_INFO=ON \
        -D BUILD_ZLIB=OFF \
        -D BUILD_WEBP=OFF \
        -D BUILD_opencv_apps=ON \
        -D BUILD_opencv_calib3d=ON \
        -D BUILD_opencv_core=ON \
        -D BUILD_opencv_dnn=ON \
        -D BUILD_opencv_flann=ON \
        -D BUILD_opencv_highgui=ON \
        -D BUILD_opencv_imgcodecs=ON \
        -D BUILD_opencv_imgproc=ON \
        -D BUILD_opencv_java=OFF \
        -D BUILD_opencv_ml=ON \
        -D BUILD_opencv_objdetect=ON \
        -D BUILD_opencv_photo=ON \
        -D BUILD_opencv_python2=ON \
        -D BUILD_opencv_python3=OFF \
        -D BUILD_opencv_shape=ON \
        -D BUILD_opencv_stitching=ON \
        -D BUILD_opencv_superres=ON \
        -D BUILD_opencv_ts=ON \
        -D BUILD_opencv_video=ON \
        -D BUILD_opencv_videoio=ON \
        -D BUILD_opencv_videostab=ON \
        -D BUILD_opencv_viz=ON \
        -D BUILD_opencv_world=OFF \
        -D BUILD_opencv_ximgproc=ON \
        -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 \
        -D CUDA_ARCH_BIN="6.2" \
        -D CUDA_ARCH_PTX="" \
        -D CUDA_NVCC_FLAGS=--expt-relaxed-constexpr \
        -D CUDA_HOST_COMPILER=/usr/bin/gcc-6 \
        -D CV_TRACE=OFF \
        -D ENABLE_CXX11=ON \
        -D WITH_1394=ON \
        -D WITH_CAROTENE=ON \
        -D WITH_CUBLAS=ON \
        -D WITH_CUDA=ON \
        -D WITH_CUFFT=ON \
        -D WITH_EIGEN=ON \
        -D WITH_FFMPEG=ON \
        -D WITH_GDAL=OFF \
        -D WITH_GPHOTO2=OFF \
        -D WITH_GIGEAPI=ON \
        -D WITH_GSTREAMER=ON \
        -D WITH_GTK=ON \
        -D WITH_INTELPERC=OFF \
        -D WITH_IPP=OFF \
        -D WITH_IPP_A=OFF \
        -D WITH_ITT=OFF \
        -D WITH_JASPER=ON \
        -D WITH_JPEG=ON \
        -D WITH_LIBV4L=ON \
        -D WITH_OPENCL=OFF \
        -D WITH_OPENCLAMDBLAS=OFF \
        -D WITH_OPENCLAMDFFT=OFF \
        -D WITH_OPENCL_SVM=OFF \
        -D WITH_OPENEXR=ON \
        -D WITH_OPENGL=OFF \
        -D WITH_OPENNI=OFF \
        -D WITH_PNG=ON \
        -D WITH_PTHREADS_PF=ON \
        -D WITH_PVAPI=ON \
        -D WITH_QT=OFF \
        -D WITH_TBB=ON \
        -D WITH_TIFF=ON \
        -D WITH_UNICAP=OFF \
        -D WITH_V4L=ON \
        -D WITH_VTK=ON \
        -D WITH_WEBP=ON \
        -D WITH_XIMEA=OFF \
        -D WITH_XINE=OFF \
        -D INSTALL_C_EXAMPLES=ON \
        -D INSTALL_TESTS=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
        -D OPENCV_TEST_DATA_PATH=../../opencv_extra/testdata ..

気になるのが,途中ワーニングが出るんだけど,
githubのぞいたら,ワーニングのメッセージを消してマージされていたから,
ちょっとこれ大丈夫かなんて思ったけども・・・。

github.com



TX2なら-j6でいいんじゃないかと・・・。

make -j6
sudo make install

以下,編集中。

Build and install OpenCV for the NVIDIA Jetson TX2
https://github.com/jetsonhacks/buildOpenCVTX2

github.com
github.com





ros-kinetic-ros-base
ros-kinetic-desktop
ros-kinetic-desktop-full
がインストールできる。

最新のros-kinetic-opencv3をインストールするとビルドが通らなくなる
https://github.com/jsk-ros-pkg/jsk_recognition/issues/2271


https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html

Deep learning inference nodes for ROS with support for NVIDIA Jetson TX1/TX2/Xavier and TensorRT
https://github.com/dusty-nv/ros_deep_learning
深層学習するわけではないが,ROSのセットアップがのっている。


ROSはこっち
http://wiki.ros.org/kinetic/Installation/Ubuntu

Jetson TX2環境でのOpenCVビルド
https://github.com/atinfinity/lab/wiki/Jetson-TX2%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AEOpenCV%E3%83%93%E3%83%AB%E3%83%89

NVIDIA Jetson TX2をセットアップしてみた
https://dev.classmethod.jp/etc/jetson-setup/


https://github.com/hoangthien94/ORB_SLAM2_CUDA/tree/049e90f1128e91b699aaef6db8007de05fac34f8

に従い順番にインスコ

1.ROSのインストール

ROSのインストール
Install Robot Operating System (ROS) on NVIDIA Jetson TX2
https://github.com/jetsonhacks/installROSTX2
↓これで入れたROSはなぜか/opt/ros/kinetic/を作らない・・・。
./installROS.sh -p ros-kinetic-desktop-full -p ros-kinetic-opencv3
公式見てみたら18.04は対応してないっぽい。
自分でビルドするか,Melodicをインスコせよ(stackoverflowより)

sudo apt-get install python-rosdep

sudo apt-get install ros-kinetic-slam-gmapping

sudo apt-get install python-rosinstall

ROSの初期化

sudo rosdep init
rosdep update

スタートアップに追加する。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

source ~/.bashrc

他の依存関係をインストールする
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

ROSの動作確認
roscore

新しいターミナルから以下を実行
rosrun turtlesim turtlesim_node

さらに新しいターミナルを開き、矢印キーでカメを制御するために次のコマンドを入力してください
rosrun turtlesim turtle_teleop_key

2.ORB SLAM2のインストール

ORB SLAM2を使うためにROSワークスペースを作成する

mkdir -p ~/slam/src

cd ~/slam/src

catkin_init_workspace

cd ..

catkin_make

echo "source ~/slam/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc


cd ~/SLAM/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2


インストール依存関係
(1)Boost
sudo apt-get install libboost-all-dev

(2)Pangolinのインストール

https://github.com/stevenlovegrove/Pangolin

Glewのインストール
sudo apt-get install libglew-dev
Cmakeのインストール(ビルド環境構築)
sudo apt-get install cmake

opencvjetpackでインストールされるはずなので,
たぶん大丈夫(いらない)
↓これはいるかも。
sudo python -mpip install numpy pyopengl Pillow pybind11

その他オプションで色々ある。

githubページに従いビルドする

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .

3.BLAS and LAPACKのインストール
sudo apt-get install -y libblas-dev liblapack-dev


4.Eigen3のインストール

sudo apt-get inatall -y libeigen3-dev
なんだけど,jetpackからインストールされている。


DBoW2とg2o(Thirdpartyに含まれています)は、ORB-SLAM2のThirdpartyフォルダにはインストールされません。

5.PCL for ROSのインストール

sudo apt-get install -y libopenni2-dev python-vtk

python-vtkはどこへ?インスコできない。
pipに移行した?
標準ではpipが入っていないのでインスコする。
あるにはあるようなのでパスしてみる。

(4)コンパイル
スクリプトファイル./build.shと./build_ros.shを実行して、それぞれ2つのバージョンのslamをコンパイルします。
cd ORB_SLAM2
chmod +x build.sh
./build.sh


ubuntu16.04rosパッケージのコンパイル中に次の問題が発生しました

`/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’ 
/usr/lib/x86_64-linux-

gnu/libboost_system.so: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 
CMakeFiles/RGBD.dir/build.make:218: recipe for target ‘../RGBD’ failed 
make[2]: * [../RGBD] Error 1 
CMakeFiles/Makefile2:67: recipe for target

‘CMakeFiles/RGBD.dir/all’ failed 
make[1]: * [CMakeFiles/RGBD.dir/all] Error 2 
make[1]: * 未完成のタスクを待っています…. 
/usr/bin/ld:

CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’ 
/usr/lib/x86_64-linux-

gnu/libboost_system.so: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 
CMakeFiles/Stereo.dir/build.make:218: recipe for target ‘../Stereo’ failed 
make[2]: * [../Stereo] Error 1 
CMakeFiles/Makefile2:104: recipe for target

‘CMakeFiles/Stereo.dir/all’ failed 
make[1]: * [CMakeFiles/Stereo.dir/all] Error 2 
Makefile:127: recipe for target ‘all’ failed 
make: * [all] Error 2

エラーが発生しました:libboost_system.soとlibboost_filesystem.soはリンクディレクトリを見つけることができませんでした
解決策は・・・・


Sudo locate boost_systemを見つけます

/ /ディレクトリを探す

/usr/lib/x86_64-linux-gnu/libboost_system.a

/usr/lib/x86_64-linux-gnu/libboost_system.so

/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0

/usr/local/MATLAB/R2017a/bin/glnxa64/libboost_system.so.1.56.0

boost_filesystemを探します。

/ /ディレクトリを探す

/usr/lib/x86_64-linux-gnu/libboost_filesystem.a

/usr/lib/x86_64-linux-gnu/libboost_filesystem.so

/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0

/usr/local/MATLAB/R2017a/bin/glnxa64/libboost_filesystem.so.1.56.0

libboost_system.soおよびlibboost_filesystem.soパスをORB_SLAM2のCMakeLists内のlibにコピーし、特にORBSLAM2 / Examples / ROS / ORBSLAM2の下のCmakelists.txt

をライブラリディレクトリに追加します。
セットで(LIBS
$ {OpenCV_LIBS}
$ {EIGEN3_LIBS}
$ {Pangolin_LIBRARIES}
$ {PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
$ {PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
$ {PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
次に${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so を追加します。
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so

問題解決

ここで私のJetsonはまたリンクソリューションで、locateがubuntuの下で応答しないという状況に遭遇しました


(5)公開データセットを実行する


1.RGB-Dインスタンス

*****レディデータ**************

1)TUMデータセットをダウンロードする

下記のリンクhttps://vision.in.tum.de/data/datasets/rgbd-dataset/downloadから関連データセットをダウンロードしてください。例えば、ダウンロード

rgbd_dataset_freiburg2_pioneer_360.tgz


2)次に、解凍​​したい場所に解凍します。ここで、ORB_SLAM2のデータセットを解凍します。


3)実行:python associate.py home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360/rgb.txt

home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360/depth.txt > associations.txt


注:これはpython2です

********テスト*********


次のコマンドを実行してください。
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE


PATH_TO_SEQUENCE_FOLDERデータセットが置かれているディレクトリをダウンロードした場所、ここではORB_SLAM2プロジェクトディレクトリ、つま

り/home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360に配置しました。


ASSOCIATIONS_FILEは生成されたassociations.txtで、指定された場所を指定します。ここでは、これをデータセットにコピーしました。つま

り、/home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360です。

/associations.txt

それから対応する、最初の
cd ORB_SLAM2
プロジェクトディレクトリ、私は実行します:

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM2.yaml
/home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360
/home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360/associations.txt


(1)TUM Dataset

上記でダウンロードしたRGB-D用のデータセットを使用して、次のコマンドを実行します。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER


上記のコマンドに次の変更を加えます。
TUMX.yamlをTUM1.yaml、TUM2.yaml、TUM3.yamlのいずれかに変更します。

PATH_TO_SEQUENCE_FOLDERをTUMデータセットデータセットの場所に変更します。


たとえば、私にとっては、ORB_SLAM2プロジェクトディレクトリに移動して次のコマンドを実行します。
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/ttwang/ORB_SLAM2/rgbd_dataset_freiburg2_pioneer_360


(2)KITTI Dataset

リンクから http://www.cvlibs.net/datasets/kitti/eval_odometry.php

KITTIデータコレクションをダウンロードし、ここで私はグラウンドトゥルースポーズをダウンロードしてORB_SLAM2プロジェクトディレクトリに解凍します。

このデータセットを使用して、次のコマンドを実行します。
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER

上記のコマンドに対して、以下の変更を加えます。

KITTIX.yamlをKITTI00-02.yaml、KITTI03.yaml、KITTI04-12.yamlのいずれかに変更します。
PATH_TO_DATASET_FOLDERは、ダウンロードしたデータコレクションが配置されている場所に変更されます。
SEQUENCE_NUMBERが00,01,02、...、11.22に変更されました
たとえば、私にとっては、ORB_SLAM2プロジェクトディレクトリに移動して次のコマンドを実行します。
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00.yaml /home/ttwang/ORB_SLAM2/dataset/sequences/00


------------------------------------------------------------------------------------------------

以下別github参照バージョン

うまくいかない 2019/5/7

------------------------------------------------------------------------------------------------

でとりあえず,クローンをつくる。
git clone https://github.com/hoangthien94/ORB_SLAM2_CUDA.git ORB_SLAM2_CUDA
cd ORB_SLAM2_CUDA
chmod +x build.sh
./build.sh

error

OpenCVのcuda関係でエラーが出ている模様。
【cudafilter.hppがエラー】
ビルド自前でしてみる?

このあたりを参考にして
https://shiroku.net/robotics/install-opencv-on-jetson-tx2/

gccのバージョンを5に落とす。
sudo apt-get install -y gcc-5 g++-5
でインストールしたあとに,gccを置換える。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --config gcc

cmake qt4がないとかなんとか。
cmakeのバージョンを落とすために,
https://cmake.org/download/
から3.5.2をダウンロード
解凍してフォルダにcdで移動
./configure
make
sudo make install
のまえに
sudo apt-get install -y qt4-qmake qt4-default qt5-qmake qt5-default
なぜかqmakeがない。

ei0124.blog.fc2.com

ROSで Tara - USB Stereo Vision Cameraを使う

ROSを触る機会があったので・・・。

安いステレオカメラを買いました。
Tara - USB Stereo Vision Cameraってやつです。
後から気づきましたがROSをサポートしているようです。
仕様を確認しないで買うのはやめましょう。
www.e-consystems.com

ROSのセットアップの仕方はこちら(英語)
www.e-consystems.com

グーグルさんの力を借りて日本語にしてみました。
以下本文になりますが,
当方の環境にあわせて改変しております。

Jetson TX2
Jetpack 4.2
Ubuntu 18.04LTS

TaraのROSサポート
Dilip Kumar J - Camera Team

前書き


TaraはON SemiconductorのMT9V024ステレオセンサーをベースにしたUVC準拠の3Dステレオカメラで、USB 3.0上で60fpsのWVGA((2 * 752)x 480)を非圧縮形式でサポートします。このステレオカメラは2つの同期センサーフレームデータをUSB 3.0インターフェイスを介してホストマシンに並べて提供します。それはまたユーザーが実時間でカメラの3Dスペース傾斜を読むことを可能にする作り付けのIMUの破片を収容する。

Taraは、お客様がステレオカメラのアルゴリズムを開発するために使用することも、ステレオカメラを製品設計に統合することを希望するお客様も使用することができます。

e-con Systems 3Dステレオカメラは、奥行き検知、視差図、点群、マシンビジョン、ドローン、3Dビデオ録画、外科用ロボットなどの用途に最適です。

このドキュメントでは、以下について説明します。
ROSを実行しているシステムでSee3CAM_Stereo USBカメラからの画像データを使用する方法。
サンプルROSベースのアプリケーションを構築する方法。
現在のカメラのプロパティを識別する方法
露出、明るさなどのカメラのプロパティを変更する方法。

範囲


この文書は、ROSを実行しているシステムでSee3CAM_Stereoカメラからの画像を使用したいアプリケーション開発者のための入門ガイドとしてのものです。

前提条件


現在のROSディストリビューション(Jade)は、ubuntu 14.04を実行しているPCにインストールする必要があります。インストール手順はこちらにあります。システムにはUSB3.0バイスを接続するための準備も必要です。See3CAM_Stereo USBカメラがTara-SDKに含まれているいくつかのサンプルアプリで正常に動作していることを確認してください。これもe-conによって提供されています。

開発者はまた、ROSとそのコアとなる作業概念についての基本的な知識が必要です。ROSの基本およびROSでのサンプルアプリケーションの作成に関する詳細については、次のリンクを参照してください。

注意:
ros-jade-ros-baseパッケージをインストールしても問題ありません。しかし、ros-jade-desktop-fullパッケージをインストールすると、後で依存関係をインストールする必要がなくなります。

ROSカメラドライバのインストール


ROS用のカメラドライバをインストールする前に、ROS関連のすべての作業が行われるワークスペースディレクトリを作成してください。

 mkdir〜/ ROS_WS / src -p
 cd〜/ ROS_WS / src

HID拡張ユニットをサポートしているROS用のuvc_cameraドライバの修正バージョンをインストールします。次のコマンドを使ってインストールできます。

 git clone https://github.com/dilipkumar25/see3cam
 cd see3cam

公式では

 git checkout tara_v1.2

となっていますが,そんなのないので無視します。

次にソースを直していきます。

see3cam/src/nodelets.cppの52-53行目

-PLUGINLIB_DECLARE_CLASS(uvc_camera, CameraNodelet, uvc_camera::CameraNodelet, nodelet::Nodelet);
-PLUGINLIB_DECLARE_CLASS(uvc_camera, StereoNodelet, uvc_camera::StereoNodelet, nodelet::Nodelet);
+PLUGINLIB_EXPORT_CLASS(uvc_camera::CameraNodelet, nodelet::Nodelet)
+PLUGINLIB_EXPORT_CLASS(uvc_camera::StereoNodelet, nodelet::Nodelet)

see3cam/src/tara_ros.cppの450行目

-		if (foutLeft == NULL)
+		if (!foutLeft)

see3cam/src/tara_ros.cppの456行目

-		if (foutLeft == NULL)
+		if (!foutLeft)

ROSのカメラ関係をインストールしていきます。

# sudo apt-get install ros-jade-camera-info-manager
# 最新のjetson TX2(Jetpack4.2)を試す場合はmelodicを指定
# ros-melodic-desktop-full入れれば自動的にインストールされる
 sudo apt-get install ros-melodic-camera-info-manager
 sudo apt-get install libudev-dev
 cd ~/ROS_WS/
 catkin_make

インストールしたパッケージを.bashrcファイルに追加する必要があります。これは、.bashrcファイルの最後に次の行を追加することによって実行できます。

#ROS用uvc_cameraドライバのセットアップ環境
source ~/ROS_WS/devel/setup.bash


ドライバの機能の一部が機能するために必要なHIDインタフェースへの読み取りアクセスを提供するために、udev規則を更新する必要があります。これは、次のコマンドを使用して実行できます。

 cd ~/ROS_WS/src/see3cam
 sudo cp udev/99-uvc.rules /etc/udev/rules.d/
 sudo udevadm trigger

カメラストリーミング


Tara用のカメラドライバをインストールしたら、ドライバと一緒に存在するサンプル起動ファイルを使用して起動する必要があります。次のコマンドはカメラを起動し、カメラのストリーミングに使用できるROSトピックをいくつか公開します。

 roslaunch uvc_camera tara_launch.launch

カメラからのプレビューは、1つのコードを使用するか、ROS Jadeにデフォルトで提供されているrqt_image_viewなどのサンプルアプリケーションを使用して表示できます。別の端末でコマンドを使用してインストールして実行します。

 sudo apt-get install ros-jade-rqt-image-view
 rqt_image_view

図6.1サポートされているストリーミングトピックのリスト

Tara USBカメラ用のROSドライバは、左右両方の画像を同時にストリーミングするための2つのトピックをサポートしています。以下は、カメラドライバの起動時に作成されるすべてのトピックです。

/stereo/concat
/stereo/image_raw
/stereo/left/image_raw
/stereo/left/camera_info
/stereo/right/image_raw
/stereo/right/camera_info

rqt_image_viewアプリケーションは、concatまたはimage_rawノードを使用したカメラストリームの表示をサポートしています。

図6.2両方のフレームを示すカメラのプレビュー

図6.3左フレームのみを表示したカメラのプレビュー

カメラのパラメータを変更する


カメラの露出と明るさは、実行時に動的に設定できます。接続されているTara USBカメラの明るさと露出を取得するには、以下のコマンドを使用します。

 rostopic echo -n 1 /stereo/get_exposure
 rostopic echo -n 1 /stereo/get_brightness

接続されているTara USBカメラの明るさと露出を設定するには、次のコマンドを使用します。

 rostopic pub -1 /stereo/set_exposure std_msgs/Float64 "data:<value>"
Example
 rostopic pub -1 /stereo/set_exposure std_msgs/Float64 "data: 20000"

 rostopic pub -1 /stereo/set_brightness std_msgs/Float64 "data:<value>"
Example
 rostopic pub -1 /stereo/set_brightness std_msgs/Float64 "data: 6"

接続されているTara USBカメラのX、Y、Z座標を取得するには、次のコマンドを使用します。

 rostopic echo /stereo/get_IMU

追加機能


Tara USBカメラ用のROSカメラドライバは、カメラのストリーミング用およびカメラ情報の取得用のトピックのステレオノードペアを作成するように設計されています。そのため、ステレオカメラと互換性があるように設計されている他のモジュール/ドライバは、このドライバで動作するはずです。そのようなテストされていないドライバの一例がstereo_image_procです。

また、カメラは事前にキャリブレーションされており、左右のセンサーに対応するcamera_infoトピックを使用しているため、他のROSドライバーがそのデータを使用することもできます。キャリブレーション用の格子模様を使用してカメラをもう一度手動で調整する必要はありません。

既知の問題と制限


このドキュメントはROSバージョンJadeでのみカメラドライバを使用するための指示を提供します。
上記の手順は、Ubuntu 14.04 64ビットのみを実行しているシステムでテストされています。
カメラの設定ファイルを保存するディレクトリ(yaml)は、ドライバのインストール後に初めて手動で作成する必要があります(catkin_make)。作成するには、次のコマンドを使用します。

 mkdir〜/ .ros / camera_info -p
サポート


さらなるサポートについてはsales[at]e-consystems.comに連絡してください。

結論


この文書は、ROSベースのシステムでTaraを使用する際に顧客にとって役立つはずです。

とのことです。

4Kモニタやテレビを買うときに

今つかっている環境でということを考えると,パソコンを4Kモニタや4Kテレビに繋ぐ際に解像度を考慮しないと字が小っちゃくなるのでメモ用に・・・。

OSの標準機能で字を大きくすればいいんだけどね!!

4Kモニタはハイビジョンの4枚分です。
幅と高さがそれぞれ2倍になるので,4枚分なのです。

イメージはこんな感じ

1920×1080

   ↓

1920×1080 1920×1080
1920×1080 1920×1080

現状23インチモニタ(1920×1080)を使用している場合
4Kは50インチを使用する

27インチモニタ(1920×1080)を使用している場合
4Kは55インチを使用する

参考↓

モニタサイズ 対角 縦比 横比
23 509 286 584.2 16 9
27 598 336 685.8 16 9
32 708 398 812.8 16 9
43 952 535 1092.2 16 9
50 1,107 623 1270 16 9
55 1,218 685 1397 16 9