عنوان: نقشه برداری متراکم قوی برای محیط های پویا در مقیاس بزرگ
در این پروژه یک الگوریتم نقشهبرداری متراکم مبتنی بر استریو را برای محیطهای شهری پویا در مقیاس بزرگ ارائه میکنیم. برخلاف سایر روش های موجود، ما به طور همزمان پس زمینه ایستا، اشیاء متحرک و اجسام بالقوه متحرک اما در حال حاضر ثابت را به طور جداگانه بازسازی می کنیم که برای کارهای رباتیک متحرک سطح بالا مانند برنامه ریزی مسیر در محیط های شلوغ مطلوب است. ما از تقسیمبندی معنایی آگاه از نمونه و جریان صحنه پراکنده برای طبقهبندی اشیاء به عنوان پسزمینه، متحرک یا بالقوه متحرک استفاده میکنیم، در نتیجه اطمینان حاصل میکنیم که سیستم قادر به مدلسازی اشیاء با پتانسیل انتقال از ایستا به پویا است، مانند اتومبیلهای پارک شده. با توجه به ژست های دوربین تخمین زده شده از کیلومتر شماری بصری، هم پس زمینه و هم اجسام متحرک (بالقوه) به طور جداگانه با ترکیب نقشه های عمق محاسبه شده از ورودی استریو بازسازی می شوند. علاوه بر کیلومتر شماری بصری، جریان صحنه پراکنده نیز برای تخمین حرکات سه بعدی اجسام متحرک شناسایی شده، به منظور بازسازی دقیق آنها استفاده می شود. یک تکنیک هرس نقشه بیشتر برای بهبود دقت بازسازی و کاهش مصرف حافظه توسعه یافته است که منجر به افزایش مقیاسپذیری میشود. ما سیستم خود را به طور کامل بر روی مجموعه داده معروف KITTI ارزیابی می کنیم. سیستم ما قادر است روی رایانه شخصی با فرکانس تقریبی 2.5 هرتز اجرا شود و گلوگاه اصلی تقسیم معنایی آگاه از نمونه است، که امیدواریم در کارهای آینده به آن بپردازیم.
این پروژه شامل کدنویسی بومی سازی و نقشه برداری همزمان در محیط های پویاست. به طور جداگانه هم محیط استاتیک و هم اجسام پویا را از آن بازسازی می کند، مانند اتومبیل ها.
DynSLAM: محلی سازی و نقشه برداری همزمان در محیط های پویا
این پروژه شامل یک سیستم SLAM متراکم است که به زبان C++ نوشته شده است. این کار بر روی InfiniTAM ساخته شده است و پشتیبانی از ورودی استریو، عملکرد در فضای باز، جمعآوری زباله وکسل و بازسازی شیء پویا جداگانه (مانند ماشین) را اضافه میکند.
پیش نمایش
اسکرین شات زیر پیش نمایش اولیه DynSLAM را در عمل نشان می دهد. این ورودی استریو را دریافت می کند، نقشه عمق را با استفاده از ELAS یا dispnet محاسبه می کند، RGB ورودی را با استفاده از آبشارهای شبکه چند وظیفه ای برای شناسایی نمونه های اشیاء قطعه بندی می کند، و سپس به طور جداگانه پس زمینه ایستا و نمونه های شی منفرد را بازسازی می کند.
پنجره بالایی بازسازی متراکم پس زمینه را نشان می دهد. پنجرههای زیرین به ترتیب بالا به پایین، چپ به راست نشان دهندة: قاب RGB سمت چپ، نقشه عمق محاسبهشده، خروجی الگوریتم تقسیمبندی معنایی آگاه از نمونه، RGB ورودی به بازسازیکننده نمونه، آمار مصرف حافظه و یک نمای جدید از نمونه شی بازسازی شده هستند.
رنگها در بازسازیهای سهبعدی با وزنهای وکسل مطابقت دارند: نواحی قرمز رنگ آنهایی با وزن کم هستند، در حالی که رنگهای آبی آنهایی با وزن بالا هستند. مناطقی که حتی چندین فریم پس از اولین مشاهده کم وزن باقی می مانند، به احتمال زیاد نویز دارند، در حالی که مناطق آبی مناطقی هستند که سیستم در بازسازی آن مطمئن است.
مخازن مرتبط
فورک InfiniTAM که توسط این سیستم برای بازسازی واقعی سه بعدی (از طریق فیوژن حجمی، استفاده از هشینگ وکسل برای ذخیره سازی نقشه) استفاده می شود. فورک شامل مجموعه ای از ترفندهای کوچک طراحی شده است تا استفاده از InfiniTAM به عنوان جزئی از یک سیستم بزرگتر را کمی آسان تر کند.
فورک از پیاده سازی رسمی آبشارهای شبکه چند وظیفه ای برای تقسیم بندی معنایی تصویر. ما به این نیاز داریم تا مشخص کنیم خودروها در کجای فیلمهای ورودی قرار دارند. استفاده از semantics ما را قادر می سازد که هم ماشین های متحرک و هم ماشین های ساکن را تشخیص دهیم.
قطعه های بازسازی
نمودارهای موجود در مقاله ICRA مربوطه را می توان از داده های خام موجود در این مخزن به شرح زیر بازسازی کرد:
Unzip ./raw-data-archives/raw-logz.7z
to ./csv
.
وابستگی های تجزیه و تحلیل داده ها را نصب کنید (به عنوان مثال، در یک محیط مجازی پایتون یا با استفاده از Anaconda). نصب پکج ها با استفاده از گزینه Anaconda می تواند به صورت زیر انجام شود:
conda install --yes jupyter pandas numpy scipy scikit-learn matplotlib seaborn
ژوپیتر را شروع کنید
cd notebooks && jupyter notebook
با استفاده از ./notebooks/StaticAndDynamicDepthAnalysis.ipynb شکل 6 را بازسازی کنید
با استفاده از ./notebooks/Voxel GC Stats.ipynb شکل 7 را بازسازی کنید
از سایر نوت بوک ها می توان برای تولید اشکال مختلف از مواد تکمیلی استفاده کرد.
ساخت و اجرای DynSLAM
اگر می خواهید خیلی سریع سیستم را بررسی کنید، یک دنباله از پیش پردازش شده وجود دارد که می توانید آن را دانلود کنید تا ببینید چگونه کار می کند (به بخش “Demo Sequence” مراجعه کنید).
اگر می خواهید دنباله های خود را از قبل پردازش کنید، به بخش “Preprocessing” مراجعه کنید.
ساختمان
این پروژه با استفاده از CMake ساخته شده است و به چندین زیر ماژول بستگی دارد. مراحل زیر برای اوبونتو 18.04 طراحی شده است. به این ترتیب، مطمئن شوید که هنگام شبیهسازی مخزن، پرچم --recursive
را فراموش نکنید. اگر فراموش کردید فقط git submodule update --init --recursive
را اجرا کنید.
اگر قبلاً این کار را نکرده اید، مخزن را کلون کنید:
git clone --recursive https://github.com/AndreiBarsan/DynSLAM
OpenCV 2.4.9 و CUDA 8 را نصب کنید.
docker و nvidia-docker را نصب کنید. آنها یک نیاز برای پیش پردازش داده ها هستند تا بتوانند توسط DynSLAM مصرف شوند.
پیش نیازها را نصب کنید (مثال اوبونتو):
sudo apt-get install libxmu-dev libxi-dev freeglut3 freeglut3-dev libglew-dev glew-utils libpthread-stubs0-dev binutils-dev libgflags-dev libpng++-dev libeigen3-dev
Pangolin را بسازید تا مطمئن شوید که در رجیستری CMake قرار می گیرد:
cd src/Pangolin && mkdir build/ && cd $_ && cmake ../ && make -j$(nproc)
پروژه را به روش استاندارد CMake بسازید:
mkdir build && cd build && cmake .. && make -j$(nproc)
ساخت DynSLAM Inside Docker
در حالی که پیش پردازش از nvidia-docker به منظور ساده سازی فرآیند استفاده زیادی می کند و این کار را بسیار موثر انجام می دهد، اجرای برنامه اصلی DynSLAM در داخل Docker هنوز پشتیبانی نمی شود.
Dockerfile در ریشه این پروژه را می توان برای ساخت DynSLAM در داخل یک ظرف داکر استفاده کرد، اما به دلیل رابط کاربری گرافیکی OpenGL آن، نمی تواند در داخل آن اجرا شود .
راه حل های این مشکل شامل استفاده از یکی از تصاویر جدید CUDA+OpenGL Docker از NVIDIA به عنوان تصویر پایه یا پشتیبانی کامل از عملیات فقط CLI است. هر دوی این وظایف بخشی از کارهای آینده باقی می مانند.
دنباله نمایشی
پس از ساخت پروژه، پردازش توالی دمو را امتحان کنید: در این پروژه یک نمونه کوتاه از KITTI Odometry Sequence 06 با نام mini-kitti-odometry-seq-06-for-dynslam آمده است.
آن را در یک دایرکتوری استخراج کنید و DynSLAM را روی آن اجرا کنید (mkdir یک باگ را دور میزند):
bash mkdir -p csv/ && build/DynSLAM --use_dispnet
--dataset_root=path/to/extracted/archive --dataset_type=kitti-odometry
دنباله های ردیابی KITTI و ادومتری توالی
این سیستم می تواند بر روی هر توالی ادومتری و ردیابی KITTI اجرا شود. دنبالههای KITTI Raw نیز باید کار کنند، اما از آنجایی که ارزیابی پیچیدهتر است، آزمایش نشدهاند، زیرا دادههای LIDAR آنها برای به حساب آوردن اثر رولینگ شاتر (rolling shutter ) پاک نمیشوند. برای اجرای سیستم بر روی این دنبالهها، بخشبندیهای معنایی آگاه از نمونه و نقشههای عمق متراکم باید از قبل پردازش شوند، زیرا DynSLAM هنوز از محاسبه آنها در پرواز پشتیبانی نمیکند.
این دستورالعمل ها برای مجموعه داده ردیابی KITTI است که در حال حاضر تنها موردی است که با استفاده از اسکریپت های کمکی پشتیبانی می شود، ما قصد داریم برای پیش پردازش آسان KITTI Odometry پشتیبانی اضافه کنیم، زیرا تنها تفاوت بین این دو مجموعه داده ساختار مسیر است.
از اسکریپت دانلود زیر برای گرفتن مجموعه داده KITTI Tracking استفاده کنید. به خاطر داشته باشید که این مجموعه داده بسیار بزرگی است که کمی بیش از 100 گیگابایت فضای دیسک را اشغال می کند. متأسفانه، ساختار دانلود به گونه ای است که دانلود توالی های جداگانه امکان پذیر نیست.
scripts/download_kitti_tracking.py [target-dir]
به طور پیش فرض، این اسکریپت داده ها را در پوشه data/kitti/tracking پروژه DynSLAM دانلود می کند.
(جایگزین) همچنین می توانید به صورت دستی مجموعه داده ردیابی KITTI را از وب سایت رسمی دریافت کنید. مطمئن شوید که همه چیز را دانلود کرده و همه را در یک دایرکتوری استخراج کرده اید (به آرشیو توالی دمو برای ساختار دایرکتوری متعارف یا Input.h مراجعه کنید تا ببینید DynSLAM چگونه آن را بارگذاری می کند).
پیش پردازش داده ها با استفاده از اسکریپت پیش پردازش:
scripts/preprocess-sequence.sh kitti-tracking <dataset-root> <training/testing> <number>
برای مثال:
scripts/preprocess-sequence.sh kitti-tracking data/kitti/tracking training 6
ششمین سکانس آموزشی KITTI Tracking را برای DynSLAM آماده می کند.
خط لوله را روی دنباله KITTI که دانلود کردید اجرا کنید.
./DynSLAM --use_dispnet --enable-evaluation=false --dataset_root=<dataset-root> --dataset_type=kitti-tracking --kitti_tracking_sequence_id=<number>
همچنین می توانید از DynSLAM –help برای مشاهده اطلاعات آرگومان های اضافی خط فرمان استفاده کنید.
پروژه مشابه دارید؟
برای ثبت سفارش در سیمیا می توانید از طریق اپلیکیشن سیمیا، یا فرم ثبت سفارش در سایت اقدام کرده و یا از طریق ایمیل، واتساپ، تلگرام و اینستاگرام اقدام نمایید.
اپلیکیشن سیمیا را از بازار و مایکت دانلود کنید.
سریع ترین راه پاسخگویی سیمیا، واتساپ می باشد. لینک واتساپ، اینستاگرام و تلگرام در پایین سایت وجود دارد.
نشانی ایمیل سیمیا simiya_ht@yahoo.com می باشد.
از برقراری تماس برای هماهنگی پروژه خودداری کنید، حجم بالای سفارشات به ما اجازه نمی دهد تا از طریق تلفن پاسخگوی شما عزیزان باشیم، حتما درخواست خود را به صورت مکتوب و از طریق یکی از راه های ذکر شده فوق ارسال نمایید، درخواست خود را به طور کامل و با تمام فایل ها و توضیحات لازم ارسال نمایید تا مدت زمان بررسی آن به حداقل برسد. پس از تعیین کارشناس، در اسرع وقت به شما پاسخ می دهیم.
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.