NARUTO 復現記錄

1 環境配置

下載項目,一定要 git 下載全項目,下載完后要檢查third_parities 里面的coslam和neural_slam_eval 文件全不全。

git clone --recursive https://github.com/oppo-us-research/NARUTO.git

環境配置

注意??

bash scripts/installation/conda_env/build.sh

這個安裝文件里面要確定 habitat 按照這個源下載好,最好能夠聯網按照腳本下載齊全。

GitHub - Huangying-Zhan/habitat-sim: A flexible, high-performance 3D simulator for Embodied AI research.

如果聯網下載失敗,則將起更改為如下

ROOT=${PWD} ### create conda environment ###
conda create -y -n naruto python=3.8 cmake=3.14.0### activate conda environment ###
conda activate naruto# ### Setup habitat-sim ###
cd ${ROOT}/third_parties
#git clone git@github.com:Huangying-Zhan/habitat-sim.git habitat_sim
git clone https://github.com/Huangying-Zhan/habitat-sim habitat_sim
cd habitat_sim
pip install -r requirements.txt
python setup.py install --headless --bullet### extra installation ###
pip install opencv-python
conda install -y ipython
pip install mmcv==2.0.0### CoSLAM installation ###
cd ${ROOT}/third_parties/coslam
git checkout 3bb904e
pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu113/torch_stable.html
pip install -r requirements.txt
cd external/NumpyMarchingCubes
python setup.py install### NARUTO installation ###
pip install -r ${ROOT}/envs/requirements.txt

安裝完畢后,cmake 總是遇到問題,建議

pip install cmake==3.14.3?

?總算安裝完成。

?2 下載數據

按照項目的readme 沒問題

# Download Replica data and save as data/replica_v1.
# This process can take a while.
bash scripts/data/replica_download.sh data/replica_v1

# Once the donwload is completed, create modified Habitat Simulator configs that adjust the coordinate system direction.
# P.S. we adjust the config so the coordinates matches with the mesh coordinates.
bash scripts/data/replica_update.sh data/replica_v1

# Download Replica (SLAM) Data and save as data/Replica
bash scripts/data/replica_slam_download.sh

3 運行

bash scripts/naruto/run_replica.sh {SceneName/all} {NUM_TRIAL} {EXP_NAME} {ENABLE_VIS}# Run MP3D 
bash scripts/naruto/run_mp3d.sh {SceneName/all} {NUM_TRIAL} {EXP_NAME} {ENABLE_VIS}# examples
bash scripts/naruto/run_replica.sh office0 1 NARUTO 1
bash scripts/naruto/run_mp3d.sh gZ6f7yhEvPG 1 NARUTO 0
bash scripts/naruto/run_replica.sh all 5 NARUTO 0

bash scripts/naruto/run_replica.sh office0 1 NARUTO 1?

#報錯0 路徑和文件名

?

?解決:

定位到NARUTO/src/simulator/habitat_utils.py", line 198,?

in make_configuration
? ? assert os.path.exists(backend_cfg.scene_id)

沒有這個文件的路徑,這個文件打印出來,發現

而在data文件夾下面找到的是不帶SDK的json文件,于是更改文件名。

?再運行,還是不行。發現data下的scene 名為room_0,config 中均為room0, 遂將data下的文件夾更名。

可以運行起來了,

#1報錯:tiny-cudann安裝出錯

Failed to build tinycudann; Could not build wheels for tinycudann; Could not find filesystem; xxx.so.xx no such file or directory?#337

User
In file included from /home/xxx/NARUTO/tiny-cuda-nn/include/tiny-cuda-nn/cpp_api.h:32:0,from /home/xxx/NARUTO/tiny-cuda-nn/include/tiny-cuda-nn/common_host.h:33,from ../../src/common_host.cu:31:
/home/xxx/NARUTO/tiny-cuda-nn/dependencies/json/json.hpp:3954:14: 致命錯誤:filesystem:沒有那個文件或目錄#include <filesystem>^~~~~~~~~~~~
編譯中斷。
error: command '/home/xxx/cuda-11.3/bin/nvcc' failed with exit code 1

參考:https://github.com/NVlabs/tiny-cuda-nn/issues/337

解決方案:

將gcc和g++升級到9.0以上版本。

#2報錯 open3d安裝出錯

evaluation過程中又有新的報錯

?OSError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/wsx/anaconda3/envs/naruto/lib/python3.8/site-packages/open3d/cpu/pybind.cpython-38-x86_64-linux-gnu.so)

這個錯誤表明您的程序或庫依賴于 GLIBC 的 2.27 版本,但您的系統上安裝的 GLIBC 版本低于 2.27。導致這種情況的原因可能是:

  1. 您的系統未安裝或未正確配置 GLIBC 2.27。
  2. 您的程序或庫要求 GLIBC 2.27,但您的系統中的版本較低或者較高

參考:Build from source - Open3D 0.18.0 documentation

==> Evaluating reconstruction result [accuracy, completeness, and completion ratio]
Traceback (most recent call last):File "src/evaluation/eval_recon.py", line 34, in <module>from third_parties.neural_slam_eval.eval_recon import calc_3d_mesh_metric, get_align_transformationFile "/home/wsx/NARUTO/third_parties/neural_slam_eval/eval_recon.py", line 7, in <module>import open3d as o3dFile "/home/wsx/anaconda3/envs/naruto/lib/python3.8/site-packages/open3d/__init__.py", line 56, in <module>_CDLL(str(next((_Path(__file__).parent / 'cpu').glob('pybind*'))))File "/home/wsx/anaconda3/envs/naruto/lib/python3.8/ctypes/__init__.py", line 373, in __init__self._handle = _dlopen(self._name, mode)
OSError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/wsx/anaconda3/envs/naruto/lib/python3.8/site-packages/open3d/cpu/pybind.cpython-38-x86_64-linux-gnu.so)
==> Evaluating reconstruction result [MAD]

?原因是ubuntu 16.04 里面沒有open3d? 0.10 版本之后需要的GLIBC_2.27。

解決方案:

參考這個[教程] Ubuntu16.04系統安裝Open3D_open3d移植到ubuntu-CSDN博客

如果想要在Ubuntu16.04的系統上使用Open3D該怎么辦呢?

可以通過編譯源碼的方式進行安裝:

(1)從github上下載Open3D的源碼,

git clone https://github.com/isl-org/Open3D

(2)切換到v0.6.0版本,(0.12.0,0.13.0需要cmake=3.17,3.18)

git checkout v0.6.0

(3)再下載子模塊的代碼

git submodule update --init --recursive

這一步是下載子模塊3rdparty的代碼,如果下載的比較慢,同樣可以先把倉庫導入到gitee,再把.gitmodules文件中的url修改為gitee中的倉庫地址即可。

(4)安裝依賴

bash util/scripts/install-deps-ubuntu.sh?

(5)按順序執行下面的命令編譯C++庫

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/Open3D/ -DBUILD_EIGEN3=ON -DBUILD_GLEW=ON -DBUILD_GLFW=ON -DBUILD_JSONCPP=ON -DBUILD_PNG=ON -DENABLE_JUPYTER=OFF -DPYTHON_EXECUTABLE=/usr/bin/python3 ..#注意DPYTHON_EXECUTABLE=/usr/bin/python3 根據自己環境的版本定義,如本文的
anaconda 虛擬環境naruto 則該命令改為cmake -DCMAKE_INSTALL_PREFIX=/opt/Open3D/ -DBUILD_EIGEN3=ON -DBUILD_GLEW=ON -DBUILD_GLFW=ON -DBUILD_JSONCPP=ON -DBUILD_PNG=ON -DENABLE_JUPYTER=OFF -DPYTHON_EXECUTABLE=/home/usrname/anaconda3/envs/naruto/bin/python3.8 ..   
make -j$(nproc)
sudo make install

(6)編譯Python庫

make pip-package

(7)編譯成功后,會在lib/python_package/pip_package/目錄下生成對應Python版本的.whl包,用pip命令安裝一下就可以了。

pip3 install lib/python_package/pip_package/open3d-0.6.0.0-cp38-cp38-linux_x86_64.whl

(8)安裝成功后可以再驗證一下:

python3 -c "import open3d"

如果沒有輸出錯誤,就說明已經可以用了。

#3 報錯:trimesh版本調整

Pixels to save: 40800 Traceback (most recent call last): File "src/evaluation/eval_mad.py", line 87, in <module> gt_pc = trimesh.sample.sample_surface(mesh_gt, 200000, seed=0)[0] # N,3 TypeError: sample_surface() got an unexpected keyword argument 'seed',如下

這個錯誤提示表明在調用 trimesh.sample.sample_surface() 函數時,出現了意外的關鍵字參數 'seed'。這可能是因為你使用的 trimesh 版本與你所查看的文檔不匹配,導致文檔中提到的參數在你使用的版本中不存在。

解決方案:

更新 trimesh 庫?(參考naruto工程的requirements 文件)

 pip install trimesh==3.23.5
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting trimesh==3.23.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c9/10/c5925a556ae5eebca155524443cb94d84ba5715b56085fbbdd8438eb5509/trimesh-3.23.5-py3-none-any.whl (685 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 685.4/685.4 kB 2.2 MB/s eta 0:00:00
Requirement already satisfied: numpy in /home/wsx/anaconda3/envs/naruto/lib/python3.8/site-packages (from trimesh==3.23.5) (1.22.4)
Installing collected packages: trimeshAttempting uninstall: trimeshFound existing installation: trimesh 3.21.5Uninstalling trimesh-3.21.5:Successfully uninstalled trimesh-3.21.5
Successfully installed trimesh-3.23.5

ok

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12311.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12311.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12311.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

番外篇 | 利用PyQt5+YOLOv5來搭建目標檢測系統(附可視化界面+功能介紹+源代碼)

前言:Hello大家好,我是小哥談。PyQt5是一個Python綁定的Qt庫,是用于創建圖形用戶界面(GUI)和其他應用程序組件的工具包。PyQt5提供了許多GUI元素,如按鈕、文本框、標簽等,也提供了許多Qt的功能,如網絡、數據庫、XML等。通過PyQt5可以在Python中使用Qt的豐富功能和強大的工…

克服虧損的負面影響 學學現貨白銀止損的方法

一個多月以前&#xff0c;現貨黃金的上漲還十分強勁&#xff0c;一度還逼近歷史的高位30大關。但是我們看近半個月以來&#xff0c;現貨白銀價格出現了調整。很多在高位買入的投資者都承受了較大的虧損&#xff0c;這時候就凸顯出了現貨白銀止損的作用。如果投資者能夠通過近期…

Git 基礎使用(2) 分支管理

文章目錄 分支概念分支使用查看分支分支創建分支切換分支合并合并沖突分支刪除 分支管理快進模式分支策略內容保存錯誤處理 分支概念 &#xff08;1&#xff09;分支概念 Git分支是指在版本控制系統Git中&#xff0c;用來表示項目的不同工作流程或開發路徑的一個重要概念。通過…

【cmake】Windows 環境下編譯第三方依賴源碼(以編譯Xerces庫為例)

第三方依賴源碼的編譯分為兩種&#xff0c;一種是使用 Configure 腳本編譯&#xff0c;另一種是使用 CMakeLists.txt 編譯。Xerces 3.2.3 的編譯方式是 CMakeLists.txt 腳本編譯。 必要軟件&#xff1a; CMake &#xff08;CMake | Download&#xff09;Visual Studio 2019&a…

前端AJAX講解

目錄 1.AJAX是什么&#xff1f; 2.異步交互和同步交互 3.AJAX常見應用情景和優缺點 4.AJAX的優缺點 5.AJAX發送異步請求&#xff08;四步操作&#xff09; 6.經典案例 1.AJAX是什么&#xff1f; AJAX即“Asynchronous JavaScript and XML”&#xff08;異步的JavaScript與…

指針基礎實踐

文章目錄 1.聲明指針2.初始化指針3.指針地址和大小&#xff0c;值4.指針解引用,修改值5.指針指向堆內存&#xff0c;修改值6.申請堆內存并釋放7.數組釋放8.指針運算9.指針遞增10.指針遞減11.指針常量12.常量指針13.常量指針指向常量 1.聲明指針 2.初始化指針 3.指針地址和大小…

【數據結構】二叉樹(Binary Tree)

文章目錄 一、樹的概念及結構二、二叉樹的概念及結構1.二叉樹的概念2.特殊的二叉樹3.二叉樹的性質 三、二叉樹的存儲順序存儲鏈式存儲 四、二叉樹的實現1.創建二叉樹2.二叉樹的遍歷前序遍歷中序遍歷后序遍歷層序遍歷根據遍歷順序創建二叉樹 3.二叉樹的基本操作1.總結點個數2.二…

ctfshow之_萌新web9至web10

一、訪問在線靶場ctfshow 1、web9 如下圖所示&#xff0c;進入_萌新賽的web9問題&#xff0c;題目提醒flag在config.php中&#xff1a; 如上圖所示&#xff0c;可以get傳參&#xff0c;且傳入的參數需要正則匹配system、exec、highlight&#xff0c;且不區分大小寫&#xff0…

C++設計模式|創建型 5.原型模式

1.什么是原型模式&#xff1f; 原型模式?種創建型設計模式&#xff0c;該模式的核?思想是基于現有的對象創建新的對象&#xff0c;?不是從頭開始創建。 在原型模式中&#xff0c;通常有?個原型對象&#xff0c;它被?作創建新對象的模板。新對象通過復制原型對象的屬性和狀…

Mac IDEA 自動補全mybatis sql語句

導航 Mac IDEA 自動補全mybatis sql語句一、點擊IDEA 右側Database選項二、選擇添加對應數據庫三、輸入數據庫信息和方案四、輸入數據庫信息和方案五、成功 Mac IDEA 自動補全mybatis sql語句 背景&#xff1a; 想在Mapper中&#xff0c;能夠實現自動檢索數據庫表和對應的字段…

QT日志類SimpleQtLogger的簡單記錄

在現代軟件開發中&#xff0c;日志記錄是必不可少的部分。它不僅幫助開發者在調試和維護軟件時了解程序的運行狀態&#xff0c;還能提供關鍵的錯誤信息。對于使用Qt框架開發應用程序的開發者來說&#xff0c;選擇一個合適的日志庫至關重要。本文將詳細介紹Qt日志庫SimpleQtLogg…

web前端之sass中的顏色函數、active按鈕激活、hover鼠標懸浮、disabled禁用、scss循環、css

MENU 效果圖htmlsassscss編譯后的css頁面css 效果圖 注意查看藍色按鈕。 html <div class"box"><button class"btn type_1">按鈕</button><button class"btn type_2">按鈕</button><button class"btn ty…

一文讀懂通用漏洞評分系統CVSS4.0:順帶理清CVE、CWE及其與CVSS之間的關系

事件響應和安全團隊論壇 (FIRST&#xff0c;Forum of Incident Response and Security Teams) 于 2023 年 11 月 1 日正式推出第四版通用漏洞評分系統 (CVSS 4.0&#xff0c;Common Vulnerability Scoring System version 4.0)。CVSS 4.0 是評估計算機系統安全漏洞嚴重性的行業…

C++ 多態性

一 多態性的分類 編譯時的多態 函數重載 運算符重載 運行時的多態 虛函數 1 運算符重載的引入 使用C編寫程序時&#xff0c;我們不僅要使用基本數據類型&#xff0c;還要設計新的數據類型-------類類型。 一般情況下&#xff0c;基本數據類型的運算都是運算符來表達&#x…

【C++】詳解C++的模板

目錄 概念 ?編輯 語法 函數模板 類模板 非類型模板參數 模板的特化 函數模板特化 類模板特化 全特化 偏特化 分離編譯 概念 模板是C中非常厲害的設計&#xff0c;模板把通用的邏輯剝離出來&#xff0c;讓不同的數據類型可以復用同一種模板的邏輯&#xff0c;甚至可以…

Flutter 中的 DataTable 小部件:全面指南

Flutter 中的 DataTable 小部件&#xff1a;全面指南 在Flutter的Material組件庫中&#xff0c;DataTable是一個用于展示數據的表格組件&#xff0c;它允許開發者以一種結構化和可滾動的方式展示數據集。DataTable非常適合展示詳細信息&#xff0c;如表格數據、統計數據或配置…

PHP黑魔法之md5繞過

php本身是一種弱語言,這個特性決定了它的兩個特點: 輸入的參數都是當作字符串處理變量類型不需要聲明,大部分時候都是通過函數進行類型轉化php中的判斷有兩種: 松散比較:只需要值相同即可,類型不必相同,不通類型比較會先轉化為同類型,比如全數字字符串和數字比較,會比…

凸優化理論學習三|凸優化問題(一)

系列文章目錄 凸優化理論學習一|最優化及凸集的基本概念 凸優化理論學習二|凸函數及其相關概念 文章目錄 系列文章目錄一、優化問題&#xff08;一&#xff09;標準形式的優化問題&#xff08;二&#xff09;可行點和最優點&#xff08;三&#xff09;局部最優點&#xff08;四…

《Python編程從入門到實踐》day28

# 昨日知識點回顧 安裝Matplotlib 繪制簡單的折線圖 # 今日知識點學習 15.2.1 修改標簽文字和線條粗細 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解決辦法&#xff1a;matplotlib切換圖形界面顯示終端TkAgg。 #…

使用Three.js繪制快速而逼真的水

本文將利用GPUComputationRenderer來實現水波紋的繪制&#xff0c;相似的案例可以看threejs官方的GPGPU Water示例。更多精彩內容盡在數字孿生平臺。 什么是 GPGPU GPGPU代表通用圖形處理單元&#xff08;General-Purpose Graphic Processing Unit&#xff09;&#xff0c;意思…