史上最全源碼安裝ROS-BUG解決集合:在樹莓派4B上安裝Raspbian Bluster + ROS-kinetic + 配置navigation

Raspberry Pi 源碼安裝ROS-Kinetic

這裏的測試中rosdep 無法使用, 通過其他方式下載了kinetic-desktop-wet.rosinstall文件,並註銷opencv的編譯+安裝。

1. 前言背景

sudo rosdep init && rosdep update 無法成功,凡是涉及到rosdep的都無法成功;

提醒: 如果你可以設置系統全局VPN那就不用這麼麻煩,只需要按照官網源碼ROS安裝方式繼續安裝就行了。

如果你沒有VPN又要用ROS,那麼以下的方法適合你。

2. 源碼安裝ROS, 逐步安裝依賴, 實現ROS源碼編譯

## 常規ROS官網的步驟

1.安裝引導依賴關係
	sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential
2."我用不了"--初始化rosdep
	sudo rosdep init
	rosdep update
3.創建catkin工作空間
	mkdir ~/ros_catkin_ws
	cd ~/ros_catkin_ws
4."我用不了"--ROS-desktop包安裝
	rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
	wstool init -j4 src kinetic-desktop-wet.rosinstall
5."我用不了"--解析依賴
	rosdep install --from-paths src --ignore-src --rosdistro kinetic -y  
6.編譯catkin工作空間
	./src/catkin/bin/catkin_make_isolated --install `-DCMAKE_BUILD_TYPE=Release

"2-4-5步用不了,導致很多依賴無法自動安裝,所以需要你自己手動逐個安裝......orz..."

## 非常規ROS官網的步驟
"下面出現的軟件包依賴都是我一個一個遇到的坑,然後手動填坑的過程, 如果你遇到了相關問題無法解決,請跟我留言把!"
1. 我在其他PC(全局VPN)上下載下來了kinetic-desktop-wet.rosinstall文件,可以拿來使用...

2. 創建工作空間, 初始化 && 爬取所有ROS包
	mkdir ~/ros_catkin_ws
	cd ~/ros_catkin_ws
	wstool init -j4 src kinetic-desktop-wet.rosinstall

3. 編譯工作空間
	sudo ./src/catkin/bin/catkin_make_isolated --install -DBOOST_ROOT=/usr/local/boost1580 -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j4

"建議: 安裝ROS, 請安裝R0S-Melodic版本,這樣底層庫boost應該是滿足條件,而不會引起衝突, 歸根究底是因爲RasBian Bluster是最新版,裏面一些底層庫都是比較新的版本(如boost-1.67.0, qt-5.11等)" 
  • 問題1: 缺少empy
解決:  sudo apt install python-empy.
  • 問題2: 缺少console_bridge
Could not find a package configuration file provided by "console_bridge"
with any of the following names:

    console_bridgeConfig.cmake
    console_bridge-config.cmake

解決: sudo apt install librosconsole-bridge-dev
  • 問題3: 缺少Poco
CMake Error at /opt/ros/kinetic/share/cmake_modules/cmake/Modules/FindPoco.cmake:189 (MESSAGE):
  Poco was not found.  Set the Poco_INCLUDE_DIR cmake cache entry to the
  top-level directory containing the poco include directories.  E.g
  /usr/local/include/ or c:\poco\include\poco-1.3.2

解決: sudo apt-get install libpoco-doc libpoco-dev
  • 問題4: 缺少SIP
File "/home/pi/ros_catkin_ws/src/orocos_kinematics_dynamics/python_orocos_kdl/cmake/FindSIP.py", line 8, in <module>
    import sipconfig
ImportError: No module named sipconfig
CMake Error at cmake/FindSIP.cmake:63 (MESSAGE):
  Could not find SIP

解決: sudo apt install python-sip python-sip-dev python-sip-doc python-sip-dbg
  • 問題5: 缺少TinyXML
CMake Error at /usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find TinyXML (missing: TinyXML_LIBRARY TinyXML_INCLUDE_DIR)

解決: sudo apt install libtinyxml-dev libtinyxml-doc
  • 問題6: boost底層庫版本不對
fatal error: boost/tr1/unordered_set.hpp: No such file or directory

解決: ros-kinetic要求boost爲1.58版本,而系統爲1.67,需要手動安裝boost_1_58_0.

wget -O boost_1_58_0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2
tar --bzip2 -xvf boost_1_58_0.tar.bz2

安裝boost有些依賴需要安裝: sudo apt-get install libboost-all-dev libbz2-dev

cd boost_1_58_0
./bootstrap.sh --with-libraries=all --with-toolset=gcc
sudo ./b2 install --prefix=/usr/local/boost1580

安裝成功之後,重新編譯ros包如下:
sudo ./src/catkin/bin/catkin_make_isolated --install --DBOOST_ROOT=/usr/local/boost1580 -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j4

"CMakeLists.txt中指定Boost庫的搜索路徑: set(BOOST_ROOT /usr/local/boost)"
  • 問題7: tinyxml2缺失
CMake Error at /usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find TinyXML2 (missing: TinyXML2_LIBRARY TinyXML2_INCLUDE_DIR)
Call Stack (most recent call first):

sudo apt install libtinyxml2-dev
  • 問題8: PyQt5有問題
ImportError: No module named PyQt5

解決: 
> sudo apt install python-pyqt5*(pyqt-5.11.0), 不能這麼安裝,會導致與pyqt5.sip找不到,不知道是不是版本問題;

源碼安裝:  下載鏈接: https://riverbankcomputing.com/software/pyqt/download5

tar -xvf PyQt5_gpl-5.10.tar.gz
python configure.py

make -j4
> 這裏會遇到錯誤: error: ‘waitForEvents’ is not a member of ‘QTest’, 這個函數自從5.10 / 5.11版本之後,去掉了。所以這裏找不到,簡單的辦法就是按照提示找到調用該函數的地方,將其註釋掉。
> 這個函數不重要,只有一個地方調用了,所以直接註釋掉就OK了。
sudo make install
  • 問題9: 缺少gtest
解決: sudo apt-get install libgtest-dev
  • 問題10: 缺少lz4
CMake Error at CMakeLists.txt:13 (message):
  lz4 includes not found

解決: sudo apt install liblz4-dev
  • 問題11: ‘logError’ was not declared in this scope" (cpp_common)
解決: 在logError前面添加CONSOLE_BRIDGE_, 即爲CONSOLE_BRIDGE_logError, 後面類似的錯誤都可以用這種方法解決。
  • 問題12: “urdfdom_headers”, but CMake did not find one.
sudo apt install liburdffdom-headers-dev
sudo apt install liburdfdom-dev

  • 問題13: No package ‘assimp’ found
sudo apt install python-pyassimp libassimp-dev
  • 問題14: 缺少collada_dom
CMake Error at CMakeLists.txt:15 (find_package):
  By not providing "FindCOLLADA_DOM.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "COLLADA_DOM"
解決:  sudo apt install libcollada-dom2.4-dp-dev

  • 問題15: No package ‘OGRE’, ‘OGRE-Overlay’ found:
解決: sudo apt-get install libogre-1.8-dev 

sudo apt install libyaml-cpp0.3-dev
sudo apt install python-netifaces python-defusedxml ---> "roscore缺少模塊組件"
  • 問題16: 在樹莓派4B上配置navigation包
1. sudo apt-get install libbullet-dev   ---> "Bullet"
2. sudo apt install libsdl-image1.2-dev libsdl2-dev  ---> "SDL"
3. 缺少diagnostic_updater: 按照源碼編譯ROS的方式,將其編譯至系統庫中;
	下載鏈接: git clone https://github.com/ros/diagnostics.git

4. 缺少tf2_geometry_msgs: 同上
	下載鏈接: git clone https://github.com/ros/geometry2.git

5. sudo apt install liborocos-bfl-dev --> "orocos-bfl"

6. 安裝pcl, 下載pcl-pcl-1.7.2;(pcl1.7版本依賴libvtk5版本的一個函數接口,而在vtk6/vtk7中已經取消了, 因此,這裏選擇pcl1.8.0+vtk7進行安裝,但要選擇boost1.58.0版本)
	
    安裝依賴: sudo apt install libflann1.9 libflann-dev(1.9的版本太高,對與pcl-1.8需要安裝flann-1.8)
    "apt-get安裝方式: "  sudo apt install libpcl-dev(但這樣安裝得到的好像是最新版pcl1.9??)
	"建議: 安裝ROS, 請安裝R0S-Melodic版本,這樣底層庫boost應該是滿足條件,而不會引起衝突, 歸根究底是因爲RasBian Bluster是最新版,裏面一些底層庫都是比較新的版本(如boost-1.67.0, qt-5.11等)" 
	"源碼編譯選項(內存有限,去掉例子): cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_apps=OFF -DBUILD_examples=OFF .."
 
7. 安裝move_base_msg, pcl_msg --> For navigation.
 
	git clone https://github.com/ros-planning/navigation_msgs.git
	git clone https://github.com/ros-perception/pcl_msgs.git
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章