Ubuntu18.04基于ROS和PX4的仿真平台配置
1.前言
作者只是一名雙非本科院校飛控專業的大二學生,想以此記錄一下自學飛控的經歷,也希望能給剛剛入門的同學一些微薄的幫助。
這個環境的安裝可以說是西天取經一般,但安裝完后發現如果有領路的人,其實花費不了太長的時間,所以我希望我這篇文章能給剛剛入門的小白提供一些幫助,有問題也可留言進行討論,在下才疏學淺,以下內容大多為引用,我只是幫大家整理一些資料,并分享我走過的一些坑。
因為網上的文章太多,而一些方法因為官網資料的迭代已經不適用了,故筆者這篇文章就是在筆者嘗試了至少十篇文章中選出的可行的方法。
2.安裝虛擬機VMware
鏈接:https://pan.baidu.com/s/1-d_OcKH41HhtPn6l83AXrg
提取碼:f183
--來自百度網盤超級會員V1的分享
此鏈接提供VMware的安裝包
按照操作提示進行安裝即可。安裝完成后點擊許可證,請百度自行搜索獲取激活碼。
Ubuntu 18.04的鏡像文件下載及其中文設置
1.1 iso鏡像安裝
虛擬機文件:
鏈接:https://pan.baidu.com/s/1UJVoeTcLG9hBq9Y099Ye1w
提取碼:0b6g
--來自百度網盤超級會員V1的分享
以下圖片均引用于(39條消息) win10/Ubuntu vmware使用Ubuntu18.04虛擬機_win10安裝ubuntu18.04虛擬機_超維空間科技的博客-CSDN博客
第一步:創建新的虛擬機
第二步:
第三步:選擇剛剛從百度網盤中下載的.iso文件
第四步:設置虛擬機用戶名和密碼
第五步:
第六步:設置磁盤大小,看個人需求(我設置的是50GB,因為如果后期出現磁盤空間不足的情況會很麻煩,你會不知道該刪哪些文件)
第七步:操作完等待安裝即可
大神的文章里還有教其他設置,再此我不在過多講解。
1.2Ubuntu18.04中文設置
如果想換成中文的同學可以參考這篇文章(39條消息) VMware安裝Ubuntu18.04圖文教程_虛擬機ubuntu18.04安裝教程_以夢為馬&不負韶華的博客-CSDN博客
換源部分不用參考,筆者發現了更為便捷的方式,在后文會進行講解。
ROS安裝
Ros官方步驟及其復雜,在此向大家推薦一位頂級大神 魚香ROS 直接百度即可。
小魚的一鍵安裝系列 | 魚香ROS (fishros.org.cn) 鏈接放在此處。
即在終端輸入:(終端打開方式CTRL + ALT+T)
wget http://fishros.com/install -O fishros && . fishros此圖片引用于:(39條消息) ros安裝(一鍵最簡安裝,吹爆魚香ROS,請叫我魚吹)-CSDN博客 按照其步驟操作即可(注意在安裝的時候不可科學上網)
其中18.04的Ubuntu版本安裝的是melodic的ROS
在rosdep還是ROS環境的安裝中,記得選桌面版,不要選小的那個
以下大部分內容引用于(39條消息) Ubuntu18.04下基于ROS和PX4的無人機仿真平臺的基礎配置搭建_Lqcx-spec的博客-CSDN博客 感興趣可以去參考此原文,但一些步驟筆者有更為簡便的方式,故如果只是環境安裝請繼續往下看。
依賴安裝(必須執行)
觀前提示:在終端執行指令時建議執行完這里的一個大項就開一個新的窗口,不然可能后期路徑上可能會發生一些不可預知的錯誤。
在終端下執行:
1sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 2 pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 3 pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse
如果出現以下報錯:
Collecting pandasUsing cached https://files.pythonhosted.org/packages/64/f1/8fdbd74edfc31625d597717be8c155c6226fc72a7c954c52583ab81a8614/pandas-1.1.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-qtvsjq8t/pandas/setup.py", line 349
f"{extension}-source file '{sourcefile}' not found.\n"
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qtvsjq8t/pandas/
即輸入以下指令:
pip install --upgrade setuptools#若未報錯不需要輸入這兩行命令
python -m pip install --upgrade pip
如果還出現一些問題,直接復制系統提示去百度即可,不用擔心,都是一個命令便可以解決的,再次便不再過多的贅述了。
Gazebo安裝
其實在魚香ROS大神的一鍵安裝中,我們便已經完成了Gazebo的安裝,但所有事情都不是完美的,大神上安裝的Gazebo或許和PX4不太適配,故后續會出現不少的坑,所以在這里我們把之前安裝的Gazebo卸載,重新安裝。
官網方案:
建議gazebo版本在9.13以上
Gazebo安裝見官網:
http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install
注意幾點:
1.選用Alternative installation: step-by-step的安裝方式
2.安裝Gazebo9.13或者以上
為了執行方便,以下把執行的步驟一一列出:
1.依次執行
sudo apt-get remove gazebo*sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo* #kinetic noetic對應修改
2.設置計算機以接受來自package.osrfoundation.org的軟件
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stablesudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'cat /etc/apt/sources.list.d/gazebo-stable.list
#如果出現deb http://packages.osrfoundation.org/gazebo/ubuntu-stable#如果出現deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示沒問題
3.設置密鑰
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -sudo apt-get update
4.安裝gazebo9.1指令
sudo apt-get install gazebo9=9.1*安裝之后終端輸入 gazebo 若打開Gazebo說明安裝成功
此處筆者剛開始打開gazebo時系統報錯:VMware: vmw_ioctl_command error Invalid argument,大概應該是虛擬機參數不合法,在翻閱一些網絡資料時也找到了線索:已知報錯的原因大概是不合法的變量導致的,故合理推測應該是啟動gazebo的時候加載系統的某個環境變量的時候虛擬機無法完美識別導致的,所以追根溯源,我們找到了修復方案:設置環境變量
依次執行:
export SVGA_VGPU10=0 echo "export SVGA_VGPU10=0" >> ~/.bashrc執行完在輸入 gazebo 測試即可
5.Gazebo本身是獨立于ROS的,因此還需要安裝ROS的Gazebo插件
sudo apt install ros-melodic-gazebo9-*sudo apt install ros-melodic-gazebo-*
測試
roscorerosrun gazebo_ros gazebo
若能打開Gazebo說明Gazebo和ROS間的插件也安裝成功。
MAVROS安裝
依次執行:
sudo apt install ros-kinetic-mavros ros-kinetic-mavros-extras # for ros-kineticsudo apt install ros-melodic-mavros ros-melodic-mavros-extras # for ros-melodic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #這步需要裝一段時間,請耐心等待PX4配置
最后的sudo ./install_geographiclib_datasets.sh 這步需要裝一段時間,請耐心等待
PX4配置
此處的方法采用的是(39條消息) 不必通宵掛機,飛速克隆PX4源碼的方法_px4克隆不了_Bingobinlw的博客-CSDN博客鏈接中的方法,極為便捷,筆者此處只對其需要注意之處進行一些講解。
6.1git安裝
沒安裝git的先安裝git:
sudo apt-get install git6.2PX4配置
直接clone如下倉庫
然后更新子模塊
這里非常重要,因為是國外的網站,所以很多連接會失敗,一定要多試幾次!筆者也大概試了十幾次才成功。
一定要在正確的路徑下執行,一般在安裝的PX4文件夾進入終端。
git submodule update --init --recursive反復執行!!!
如果出錯的話,需要刪除空白文件夾,再次更新子模塊
submodule update --init --recursive
去下載的PX4文件夾右上角選擇“顯示所有文件”,找到***.gitmodules***文件,直接復制粘貼以下內容。(替換掉原本的內容)
path = mavlink/include/mavlink/v2.0
url = https://gitee.com/bingobinlw/c_library_v2.git
branch = master
[submodule "src/drivers/uavcan/libuavcan"]
path = src/drivers/uavcan/libuavcan
url = https://gitee.com/bingobinlw/uavcan.git
branch = px4
[submodule "Tools/jMAVSim"]
path = Tools/jMAVSim
url = https://gitee.com/bingobinlw/jMAVSim.git
branch = master
[submodule "Tools/sitl_gazebo"]
path = Tools/sitl_gazebo
url = https://gitee.com/bingobinlw/sitl_gazebo.git
branch = master
[submodule "src/lib/matrix"]
path = src/lib/matrix
url = https://gitee.com/bingobinlw/Matrix.git
branch = master
[submodule "src/lib/ecl"]
path = src/lib/ecl
url = https://gitee.com/bingobinlw/ecl.git
branch = master
[submodule "boards/atlflight/cmake_hexagon"]
path = boards/atlflight/cmake_hexagon
url = https://gitee.com/bingobinlw/cmake_hexagon.git
branch = px4
[submodule "src/drivers/gps/devices"]
path = src/drivers/gps/devices
url = https://gitee.com/bingobinlw/GpsDrivers.git
branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
path = src/modules/micrortps_bridge/micro-CDR
url = https://gitee.com/bingobinlw/micro-CDR.git
branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
path = platforms/nuttx/NuttX/nuttx
url = https://gitee.com/bingobinlw/NuttX.git
branch = px4_firmware_nuttx-8.2
[submodule "platforms/nuttx/NuttX/apps"]
path = platforms/nuttx/NuttX/apps
url = https://gitee.com/bingobinlw/NuttX-apps.git
branch = px4_firmware_nuttx-8.2
[submodule "cmake/configs/uavcan_board_ident"]
path = cmake/configs/uavcan_board_ident
url = https://gitee.com/bingobinlw/uavcan_board_ident.git
branch = master
[submodule "platforms/qurt/dspal"]
path = platforms/qurt/dspal
url = https://gitee.com/bingobinlw/dspal.git
5.打開新的終端,安裝必要的python依賴:
cd ~/PX4_Firmwarebash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools
編譯
make px4_sitl_default gazebo6.打開修改 ~/.bashrc
gedit ~/.bashrc在其中最下方復制粘貼:
source ~/catkin_ws/devel/setup.bashsource ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
PS:其中PX4_Firmware注意改成你自己的文件路徑,比如我的:
如圖改成了Firmware
然后執行:
source ~/.bashrc接下來在PX4_Firmware文件夾下打開終端,執行:
roslaunch px4 mavros_posix_sitl.launch#連接px4與mavros
再運行
rostopic echo /mavros/state若connected: True,則說明MAVROS與SITL通信成功。如果是false,一般是因為.bashrc里的路徑寫的不對,請仔細檢查。
QGC安裝
用虛擬機中的瀏覽器打開:https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html
找到Ubuntu Linux 版本,按照指示進行安裝。
在首次安裝 QGroundControl 之前,逐一輸入:
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
重啟虛擬機
點擊官網的鏈接進行安裝https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
賦予下載的程序權限,不然無法打開
此時QGC即可雙擊打開,大功告成~
筆者在安裝完后有一些感悟,大家如果感興趣便當廢話看看吧。當我們在面對一個完全陌生的東西時,網上有非常多的大神和非常多有用的帖子,但大家一定不要喪失了獨立思考的能力,比如說在執行時遇到了問題只想著去復制粘貼別人的解決方法,而不愿意多看幾眼自己錯誤的原因,我的建議是如果遇到不如多花點時間去想想這里會什么會報這樣的錯誤,我相信這樣一番思索下來,你會收益匪淺的~
在此感謝我的舍友和我的指導老師,在我前進路上給了我極大的幫助。
總結
以上是生活随笔為你收集整理的Ubuntu18.04基于ROS和PX4的仿真平台配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 登康口腔冲刺上市:销售费用远高于研发,旗
- 下一篇: SSM整合练习:记账管理