์๋ ํ์ธ์. ํ์ฌ GIT ์ค๋ ์ท์ ๋ํ ๋น๋์ค ์ฌ๊ตฌ์ฑ์ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ ์คํธ๋ฅผ ์ํด ์ ์ ๋ ์ฑ ๋น๋์ค ์ฌ์ฉ. ODM์ Docker์์ ์คํ๋๋ฉฐ Dockerfile์ ์ฌ์ฉํ์ฌ ๋ง๋ ์ด๋ฏธ์ง :
FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get remove libdc1394-22-dev \
&& apt-get install -y --install-recommends sudo build-essential cmake \
python-pip libgdal-dev libgeotiff-dev pkg-config libgtk2.0-dev \
libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev \
libflann-dev libproj-dev libxext-dev liblapack-dev libeigen3-dev \
libvtk5-dev python-networkx libgoogle-glog-dev libsuitesparse-dev \
libboost-filesystem-dev libboost-iostreams-dev libboost-regex-dev \
libboost-python-dev libboost-date-time-dev libboost-thread-dev \
python-empy python-nose python-pyside python-pyexiv2 python-scipy jhead \
liblas-bin libglew-dev python-catkin-pkg catkin libgmp-dev libgmp3-dev \
libmpfr-dev libmpfrc++-dev vim-nox \
&& apt-get autoremove && apt-get clean
RUN useradd -m -U odm
RUN mkdir /code
WORKDIR /code
RUN git clone https://github.com/OpenDroneMap/OpenDroneMap.git .
RUN git submodule init && git submodule update
RUN wget -c http://launchpadlibrarian.net/165141962/libeigen3-dev_3.2.0-8_all.deb && dpkg -i libeigen3-dev_3.2.0-8_all.deb && rm -f libeigen3-dev_3.2.0-8_all.deb
RUN cd SuperBuild && cmake -DODM_BUILD_SLAM=ON . && make
RUN bash ./configure.sh install && \
cd build && cmake -DODM_BULID_SLAM=ON .. && make && cd .. && \
chown -R odm:odm /code
USER odm
ENV PYTHONPATH=${PYTHONPATH}:/code/SuperBuild/install/lib/python2.7/dist-packages:/code/SuperBuild/src/opensfm \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/code/SuperBuild/install/lib
VOLUME ["/images"]
ENTRYPOINT ["python", "/code/run.py", "--project-path", "/images"]
์ด๋ฏธ์ง์๋ ์ ์๋ํ์ง๋ง ๋น๋์ค๋ฅผ ๋ง๋ค๋ ค๊ณ ํ ๋ ๋ค์์ด ๋ฐ์ํฉ๋๋ค.
docker run -t -i --entrypoint=/bin/bash -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/prapor/Downloads:/code/video opendronemap
odm<strong i="9">@53e1ad7fbae3</strong>:/code$ RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
odm<strong i="10">@53e1ad7fbae3</strong>:/code$ export PYTHONPATH=$RUNPATH/SuperBuild/install/lib/python2.7/dist-packages:$RUNPATH/SuperBuild/src/opensfm:$PYTHONPATH
odm<strong i="11">@53e1ad7fbae3</strong>:/code$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib
odm<strong i="12">@53e1ad7fbae3</strong>:/code$ python modules/odm_slam/src/calibrate_video.py --visual
./video/output/test1/chessboard.mp4
kept current chessboard found
34 1107 True
RMS: 0.881957891046
# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 1512.91332401
Camera.fy: 1512.04223185
Camera.cx: 956.585155225
Camera.cy: 527.321715394
Camera.k1: 0.140581949184
Camera.k2: -0.292250537695
Camera.p1: 0.000188785464717
Camera.p2: 0.000611510377372
Camera.k3: 0.181424769625
odm<strong i="13">@53e1ad7fbae3</strong>:/code$ python run.py --project-path ./video/output --video castle_video.mp4 --slam-config config.yaml --resize-to 1280 test1
[INFO] Initializing OpenDroneMap app - Mon May 15 13:16:24 2017
Traceback (most recent call last):
File "run.py", line 39, in <module>
app = ODMApp(args=args)
File "/code/scripts/odm_app.py", line 26, in __init__
ecto.BlackBox.__init__(self, *args, **kwargs)
File "/code/SuperBuild/install/lib/python2.7/dist-packages/ecto/blackbox.py", line 259, in __init__
self.__connect()
File "/code/SuperBuild/install/lib/python2.7/dist-packages/ecto/blackbox.py", line 284, in __connect
raise BlackBoxError('Got error "%s" when calling connections on "%s"' % (str(e), str(self)))
ecto.blackbox.BlackBoxError: Got error "global name '_p' is not defined" when calling connections on "<scripts.odm_app.ODMApp object at 0x7f2689801c50>"
config.yaml์ chessboard.mp4 ๋ฐ castle_video.mp4์ ๋์ผํ ํด๋์ ์์ผ๋ฉฐ, chessboard ์ถ๋ ฅ์ config์์์ ๋์ผํ ๊ฒ์ผ๋ก ํ์ธ๋ฉ๋๋ค. ๋๊ตฐ๊ฐ ๋ด๊ฐ ๋ญ ์๋ชปํ๊ณ ์๋ค๊ณ ๋งํ ์ ์์ต๋๊น?
์๋
ํ์ธ์,
๋๋ ๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ Ubuntu 16.04 64 ๋นํธ์์ ์คํ ์ค์ด๋ฉฐ Eigen 3.3 (3.2๋ก ๋ค์ด ๊ทธ๋ ์ด๋)์์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์์ ํ ํ ORB_SLAM์ผ๋ก ์ปดํ์ผ ๋ ODM
๊ทํ์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์
๋ ฅ ๋น๋์ค ๋ฐ yaml ๊ตฌ์ฑ ํ์ผ์ / project / path ํด๋์ ์์ง๋ง ๋์ผํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
ํํธ๊ฐ ์์ต๋๊น?
SLAM์ ๋ค์ ์๋์ํฌ ์ฑํผ์ธ์ ์ฐพ๊ณ ์์ต๋๋ค.
๋ฌธ์ ๋ scripts \ ODM_app.py, 100 ํ์ ๋ฒ๊ทธ์ ๋๋ค. '_p'๊ฐ ์๋ 'return self.slam_connections (p)'์ฌ์ผํฉ๋๋ค.
์ฐ๋ฆฌ๋ ODM์ ๋น๋์ค ๋ถ๋ถ์ ์ ๊ฑฐํ์ต๋๋ค. @pierotofy๋ก ํ์ธํ๊ณ ๊ทธ๋์ ์ข ๋ฃํฉ๋๋ค.
SLAM ์ง์์ด ์ ๊ฑฐ๋์๋์ง ํ์ธํฉ๋๋ค (๋น๋์ค ์ง์์ด ์์ผ๋ฉด ์ข๊ฒ ์ง ๋ง ๊ธฐ์ฌํ์ง ์์ผ๋ฉด ์๋ฃ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค).