1. 程式人生 > >視覺slam學習之路(一)看高翔十四講所遇到的問題

視覺slam學習之路(一)看高翔十四講所遇到的問題

nes make 機器 cmake 編寫 直接 記錄 nbsp slam

目前實驗室做機器人,主要分三個方向,定位導航,建圖,圖像識別,之前做的也是做了下Qt上位機,後面又弄紅外識別,因為這學期上課也沒怎麽花時間在項目,然後導師讓我們確定一個方向來,便於以後發論文什麽。上個禮拜看了些論文,感覺視覺slam方向還可以,圖像識別畢竟不是計算機科班,可能真正要弄也很難有成果,slam也是最近才研究起來,也挺適合我們搞,需要一些高數、c++、ros等知識,學的東西也挺多的,但這樣才能體現研究生的價值,不然本科生也能做,然後確定了這個研究方向,希望好好研究個一兩年有所成就,研三一個師兄搞的是激光slam,找的工作待遇也不錯,前景還是可以的。然後這個禮拜就主要安裝了ubuntu、kde,看十四講書,運行裏面的程序,也遇到不少問題,所以就記錄下來,下面這些遇到的問題也是自己寫的記錄,粘貼過來可能不適合大家看,不過希望有所幫助吧,湊合著看,後面希望能更新,像高博 @半閑居士 那樣開個博客,哈哈。
2018年1.18 1.高翔P28 g++ helloSLAM.CPP 遇到問題:g++ error:沒有那個文件目錄 解決:需找到文件目錄 cd /home/cy/slambok/ch2/ (文件目錄有空格需跳 用tab? cmake . 編譯 make (%有問題 ./helloSLAM 【g++就 ./a.out 2.30頁要刪除之前生成的中間文件,即刪除CMakelists.txt和helloSLAM.cpp以外的所有文件。否則make時會報錯 3.31頁增加庫文件,先前第2步建的build要保存,因為cmakelists.txt有之前的構建,我的錯誤是新建libHelloSLAM.CPP時cpp竟然是大寫,然後make時報錯makefile找不到,弄了半天才發現這個錯誤。
4從編程的角度講,通常有靜態庫文件和動態庫文件。windows靜態庫文件就是.lib文件,動態庫文件就是.dll文件。內容一樣,都是將函數封裝在一起編譯後供自己或他人調用。好處在於編譯後的庫文件看不到源代碼,可保密;同時不會因為不小心修改了函數而出問題,便於維護。 兩種庫的區別在於靜態庫被調用時直接加載到內存,而動態庫再是在需要的時候加載到內存,不使用的時候再從內存釋放。 unix系統的靜態庫文件和動態庫文件後綴分別是.a和.so 5.main函數的源文件生車可執行文件 其他源文件編譯成庫文件。 6.有個疑問就是,書上調用的庫文件printHello最終輸出,但是之前的helloSLAM.cpp的源文件執行的卻沒有? 後面試了下在配置啟動器更改配置文件為helloslam,則輸出helloslam.cpp的源程序,增加兩個配置不知為什麽還是只執行usehello.難道一次只能執行一個執行文件?
7.按debug模式竟然閃現,不能調試。 解決:問了師兄解決了,原來是配置啟動器設置的調試斷點不是當前啟動配置,然後會出現閃現。 8.齊次坐標 參考:http://blog.csdn.net/janestar/article/details/44244849 2018年1月19日 1.歐拉角https://www.zhihu.com/question/47736315 2.58頁useGeometry程序,書上源程序命名useGeometry.cpp,然後我自己編寫源程序名是按的書上的,CMakelists按高的源代碼,但是高給的源代碼命名是eigenGeoetry.cpp,CMakeLists.txt中add_executable( eigenGeometry eigenGeometry.cpp )然後導致我在終端時cmake出現找不到源程序的錯誤eigenGeoetry.cpp,因為我命名的是useGeometry.cpp。後面MAKE完總按./useGeometry 然後出現“沒有那個文件或目錄”錯誤 解決:add_executable( eigenGeometry eigenGeometry.cpp )改為add_executable( useGeometry useGeometry.cpp )。也就是前面那個程序名可以自己改,但是後面終端執行時./useGeometry與程序名一致,後賣弄那個需與命名的源程序名一致。

視覺slam學習之路(一)看高翔十四講所遇到的問題