マルチプラットフォームのための OpenGL ES入門 基礎編 Android/iOS 対応グラフィックスプログラミング
マルチプラットフォームのためのOpenGL ES入門 基礎編 Android/iOS 対応グラフィックスプログラミング
目 次
第3章 Android版のセットアップ
3.1 サンプルプログラムの入手
3.2 必要なソフトウェアのダウンロード
3.3 JDKのインストール
3.5 SDKのアップデート
3.6 NDKのインストール
3.7 Eclipseのセットアップ
3.8 プロジェクトのインポート
3.9 実機へインストール
第5章 Hello OpenGL ES 2.0!!
5.1 初期化処理
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.5 UV座標用の行列を生成する【sample_rendering_matrix_sprite_uv.c】
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
以上!!
ubuntuで圧縮、解凍
自分用-
tar.gz
圧縮
tar -zcvf x.tar.gz folder
解凍
tar -zxvf x.tar.gz
zip
圧縮
zip -r x.zip folder
解凍
unzip x.zip
macOSで画面を音声付きで録画する
SoundflowerとQickTimeを使えばOK
以下から、macOS Mojave で使えるSoundflowerを落としてくる
github.com
そのままインストールできないので、
まず環境設定からプライバシーとセキュリティを選択して
左下の鍵を開けておく。
それからインストールすると
1回失敗します。
環境設定からプライバシーとセキュリティを再度選択して開くと
以下のようにメッセージが出ているので許可を選択
そうすれば
うまくいくはず。
インストールされたら
環境設定からサウンドを選択して
Soundflowerを選ぶ。
あとは、QuickTimeを開いて
マイクの設定でSoundflowerを選べばできる。
ただ、サウンドの出力にSoundflowerを選んでいる間は
内臓スピーカーからは何も音声が出ない。
以下のサウンドミキサーを入れる
Jetson TX2でOpenCV3.4.0のセットアップから,ROSのインストール・ORB_SLAM2のインストールまでやってみよう!(編集中)
目標
これをやる。
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
sudo apt-get purge libopencv*
邪魔なライブラリも消す。
sudo apt-get purge python-numpy
autoremoveで依存関係ないもの消しちゃう
sudo apt autoremove
updateでパッケージを更新して
sudo apt-get update
これからビルドしようとしているOpenCVは gccなり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にチャレンジ
任意のフォルダを作成し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のぞいたら,ワーニングのメッセージを消してマージされていたから,
ちょっとこれ大丈夫かなんて思ったけども・・・。
TX2なら-j6でいいんじゃないかと・・・。
make -j6
sudo make install
以下,編集中。
Build and install OpenCV for the NVIDIA Jetson TX2
https://github.com/jetsonhacks/buildOpenCVTX2
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
opencvはjetpackでインストールされるはずなので,
たぶん大丈夫(いらない)
↓これはいるかも。
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がない。
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 |