<source : NVIDIA>

一、前言

對ROS有充滿著滿滿的熱情,下一步就想要打造一個真實的機器人。同時希望不用藉由任何擴充件就可以實現物件辨識的功能,考量預算後,Jetson nano是個不錯的選擇。於是從露天拍賣購入 Waveshare 製造的 Jetson nano相關配件,包含擴充板。

因部分模組Waveshare開發,可能和Nvidia官方的教學有些許差異,因此露天商家建議,依照Waveshare官方教學,就可以順利完成安裝。

然而,事情卻沒這麼單純。在 ROS 的安裝上,從 melodic 一直到 ros_deep_learning 都很順利,可是裝到 jetbot_ros時,遇到了以下錯誤:


1.編譯image_converter.cpp時

error: 'cudaBGR8ToRGBA32' was not declared in this scope


2.執行jetbot_motors.py

No module named Adafruit_MotorHAT找不到module


3.執行jetbot_motors.py

TabError:inconsistent use of tabs and space in indentation


在網路上也找不到相關文章,只好挽起袖子自己來除錯了。很幸運地,順利地把所有錯誤解決。為了讓開發同好不要再為著個問題困擾著,於是解決方案記錄如下。


二、錯誤與解決方案

(一)

編譯image_converter.cpp時,出現以下錯誤

error: 'cudaBGR8ToRGBA32' was not declared in this scope

解決方案:

最快的方法就是將 Jetbot 中的CMakeLists.txt、package.xml與src中所有的檔案,抽換成Jetbot原開發者的檔案,再重新編譯,就可以順利完成編譯。

Jetbot原開發者Github


(二)

2.執行jetbot_motors.py

No module named Adafruit_MotorHAT找不到module


解決方案 :

這是因為系統預設Python為2.x版,而實際上這個模組需要的是3.x版的Python。因此只要輸入以下指令,就可以順利載入 Adafruit_MototHAT 模組。若未來你的模組需使用2.x版的Python,再將以下指令的Python版本做抽換即可。

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100


(三)

3.執行jetbot_motors.py

TabError:inconsistent use of tabs and space in indentation

解決方案 :

這個問題很容易解,其實就是程式碼未正確縮排。打開程式碼,從頭檢查一遍即可,記得 "Tab"和"Space"鍵不能混用,也就是說如果你選擇用 "Space"鍵進行縮排,那麼該程式碼就得全部都用"Space"鍵進行縮排。


---

參考資料

#Jetson_nano #Jetbot #cudaBGR8ToRGBA32 #Adafruit_MotorHAT

0 留言