Ubuntu20.04安装ROS教程(虚拟机/双系统,含报错解决)
最近在配置ROS環境時遇到了一些問題,遂在本文做個記錄。主要解決了如何通過虛擬機的方式實現ROS的配置。
環境: 宿主機:Windows10 雙系統:Ubuntu18.04 虛擬機:Ubuntu20.04文章目錄
- 1.虛擬機安裝 Ubuntu20.04
- 1.1 安裝VMware Workstation 16 Pro
- 1.2 下載Ubuntu20.04鏡像
- 1.3 安裝Ubuntu20.04虛擬機
- 2. Win10、Ubuntu雙系統
- 2.1 Ubuntu16.04配置
- 2.2 Ubuntu18.04配置
- 3. Ubuntu18.04 配置ROS
- 3.1 創建虛擬環境 virtualenv
- 3.2 配置ROS軟件倉庫
- 3.3 安裝 ROS
- 3.4 初始化 rosdep
- 3.5 報錯解決
- 3.6 `rosdep update` time out error(未解決)
- 4. Ubuntu20.04虛擬機配置ROS(成功!)
- 4.1 換源
- 4.2 基礎軟件安裝
- 4.3 配置ROS環境
- 4.3.1 安裝顯卡驅動
- 4.3.2 安裝虛擬環境
- 4.3.3 安裝noetic(對應ubuntu20.04)
- 4.4 通過橋接解決 `rosdep update` time out error
- 4.4.1 虛擬機選擇橋接(校園網選擇NAT):
- 4.4.2 打開 allow lan:
- 4.4.3 宿主機查看ip地址:
- 4.4.4 Ubuntu設置proxy:
- 4.4.5 Ubuntu安裝proxychains
- 4.5 測試小海龜
- 參考:
1.虛擬機安裝 Ubuntu20.04
1.1 安裝VMware Workstation 16 Pro
下載地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
最后一步選擇第一項,輸入激活密鑰
1.2 下載Ubuntu20.04鏡像
下載地址:http://releases.ubuntu.com/focal/
直接下載鏡像比較慢,使用迅雷通過種子下載比較快。
1.3 安裝Ubuntu20.04虛擬機
選擇創建新的虛擬機
選擇自定義
選擇:
選擇下載的鏡像.iso文件
輸入信息
選擇安裝位置
根據本機情況設置
選擇推薦虛擬內容容量
使用橋接連接網絡
使用校園網撥號上網,Ubuntu18以后不支持撥號,配置PPPOE不管用,設置橋接可以上網。
默認選項
SCSI控制器的英文名稱是“Small Computer System Interface”,中文翻譯為"小型計算機系統專用接口";顧名思義,這是為了小型計算機設計的擴充接口,它可以讓計算機加裝其他外設設備以提高系統性能或增加新的功能,例如硬盤、光驅、掃描儀等。
選擇
設置磁盤容量
默認
默認
等待安裝
右擊左側邊欄的虛擬機,選擇設置,選擇NAT模式,這樣就把win10下的網絡橋接到虛擬機系統了。
2. Win10、Ubuntu雙系統
虛擬機耗內存,有卡頓,使用體驗不好,裝雙系統使用體驗更好。
這部分之前配置過了,不再贅述。相關教程比較多,對照著配置一般不會出問題。可能出問題的地方是開機界面卡死,主要是安裝顯卡驅動不正確導致的。
之前配置的教程記錄:
2.1 Ubuntu16.04配置
基于 Ubuntu 16.04 從零開始配置深度學習主機(一)–基礎配置
基于 Ubuntu 16.04 從零開始配置深度學習主機(二)–顯卡驅動\CUDA\CUDNN配置
基于 Ubuntu 16.04 從零開始配置深度學習主機(五)–Darknet配置與訓練
2.2 Ubuntu18.04配置
Ubuntu18.04下 GPU版本 Tensorflow2.0+CUDA10.0 / Tensorflow2.1+CUDA10.1 虛擬環境配置
3. Ubuntu18.04 配置ROS
3.1 創建虛擬環境 virtualenv
安裝虛擬環境及擴展包:
pip install virtualenv pip install virtualenvwrapper創建用來存放虛擬環境的目錄:
//home目錄下運行 mkdir .virtualenvs //非home目錄下運行 mkdir ~/.virtualenvs編輯home目錄下的.bashrc文件,添加下面兩行內容:
//打開.bashrc文件命令 //vi ~/.bashrc 或者 nano ~/.bashrc export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv source ~/.local/bin/virtualenvwrapper.sh注:ubuntu18及以上版本,virtualenvwrapper.sh被安裝到了home目錄下的.local/bin/中,非原來的/usr/local/bin/中。
運行.bashrc,使其生效
//home目錄下運行 source .bashrc //非home目錄下運行 //source ~/.bashrc創建虛擬環境
//創建pyhton2的虛擬環境 mkvirtualenv name //創建python3的虛擬環境 mkvirtualenv -p python3 name激活虛擬環境
workon name退出虛擬環境
deactivate查看虛擬環境中的包
pip list查看所有虛擬環境:
lsvirtualenv刪除虛擬環境
rmvirtualenv name卸載虛擬環境
sudo apt-get remove virtualenv sudo apt-get remove virtualenvwrapper3.2 配置ROS軟件倉庫
創建虛擬環境:
mkvirtualenv -p python3 ros激活虛擬環境
workon ros配置Ubuntu軟件倉庫(repositories)以允許使用“restricted”“universe”和“multiverse”存儲庫。
設置電腦以安裝來自packages.ros.org的軟件。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'若下載速度緩慢,推薦就近選擇一個鏡像源替換上面的命令。例如,Tsinghua University為:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'如果依舊遇到連接問題,請嘗試為Ubuntu apt換源。
設置密鑰
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654若無法連接到密鑰服務器,可以嘗試替換上面命令中的 hkp://keyserver.ubuntu.com:80 為 hkp://pgp.mit.edu:80 。
Linux在安裝軟件時,需要通過源列表去尋找對應的軟件,Ubuntu默認的軟件列表是沒有ROS的,需要把packags.ros.org網站配置到軟件倉庫列表內才能下載ROS,不然顯示的是沒有這個軟件。
配置公網密鑰,這一步是確保系統認為這個路徑是安全的,下載文件是沒有問題的。不然下載的東西會立刻被清除掉。
3.3 安裝 ROS
首先,確保你包索引是最新的:
sudo apt update在 ROS 中有很多不同的庫和工具。ROS提供了四種默認選項。你也可以單獨安裝 ROS 的軟件包。
桌面完整版(推薦): : 包含 ROS、rqt、rviz、機器人通用庫、2D/3D 模擬器、導航以及 2D/3D 感知包。
sudo apt install ros-melodic-desktop-full桌面版: 包含 ROS,rqt,rviz 和機器人通用庫
sudo apt install ros-melodic-desktopROS-基礎包: 包含 ROS 包,構建和通信庫。沒有圖形界面工具。
sudo apt install ros-melodic-ros-base單獨的包: 你也可以安裝某個指定的ROS軟件包(使用軟件包名稱替換掉下面的PACKAGE):
sudo apt install ros-melodic-PACKAGE如:
sudo apt install ros-melodic-slam-gmapping3.4 初始化 rosdep
在使用 ROS 之前,需要初始化 rosdep。rosdep 能夠輕松地安裝被想要編譯的源代碼,或被某些 ROS 核心組件需要的系統依賴。
sudo apt install python-rosdep2sudo rosdep init執行成功之后,提示輸入以下指令:
rosdep update如果出現Error,可能是網絡導致的,多執行幾次命令即可。
添加到環境變量:
啟動:
roscore3.5 報錯解決
由于網絡原因, 可能會報以下錯誤:
ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.
解決辦法,執行如下命令:
在文件末尾添加:
151.101.84.133 raw.githubusercontent.com然后查詢raw.githubusercontent.com的IP地址,并替換151.101.84.133
raw.githubusercontent.com resolves to the following 4 IPv4 addresses: 185.199.108.133 185.199.109.133 185.199.110.133 185.199.111.133如果遇到有些包下載不完全,之后又重新 sudo rosdep init 時,可能會遇到如下錯誤:
ERROR: default sources list file already exists: /etc/ros/rosdep/sources.list.d/20-default.list Please delete if you wish to re-initialize
困擾了我四五天,現在還沒解決。
嘗試過手機熱點,安卓和ios都不行,校園網不可以。
嘗試配置撥號連連接,未成功。
嘗試Science上網,SS和CLASH均配置失敗。
遂暫時用虛擬機配置···
在虛擬機上解決了該問題,大概思路就是:通過橋接網絡,在宿主機器上科學上網,通過配置虛擬機的proxy,實現虛擬機的科學上網。
4. Ubuntu20.04虛擬機配置ROS(成功!)
4.1 換源
參考:https://zhuanlan.zhihu.com/p/142014944
備份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak打開/etc/apt/sources.list文件,在前面添加如下條目,并保存。
sudo gedit /etc/apt/sources.list #添加阿里源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse #添加清華源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse更新源
sudo apt-get update如出現依賴問題,解決方式如下:
sudo apt-get -f install更新軟件:
sudo apt-get upgrade4.2 基礎軟件安裝
chrome下載:https://www.google.cn/chrome/
搜狗拼音下載:https://pinyin.sogou.com/linux/?r=pinyin
安裝參考:
錯誤:Gtk-Message: 03:59:19.540: Failed to load module "canberra-gtk-module"
解決:
sudo apt-get install libcanberra-gtk-module啟動:
- 切換: cd /usr/bin
- 執行:./netease-cloud-music
參考:https://typora.io/#linux
4.3 配置ROS環境
參考CH3.1——CH3.5
4.3.1 安裝顯卡驅動
參考:Ubuntu20.04顯卡驅動安裝
4.3.2 安裝虛擬環境
sudo apt install python3-pip pip3 install virtualenvwrapper4.3.3 安裝noetic(對應ubuntu20.04)
參考:在Ubuntu20.04中安裝ROS Noetic
sudo apt update sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt install ros-noetic-desktop-full在使用 ROS 之前,需要初始化 rosdep。rosdep 能夠輕松地安裝被想要編譯的源代碼,或被某些 ROS 核心組件需要的系統依賴。
sudo apt install python3-rosdepsudo rosdep init報錯:
(ros) datazero@ubuntu:~$ sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.解決:
cd /etc sudo nano hosts在文件末尾添加:
151.101.84.133 raw.githubusercontent.com然后查詢raw.githubusercontent.com的IP地址,并替換151.101.84.133
raw.githubusercontent.com resolves to the following 4 IPv4 addresses: 185.199.108.133 185.199.109.133 185.199.110.133 185.199.111.133如圖:
執行成功之后,提示輸入以下指令:
rosdep update報錯:
reading in sources list data from /etc/ros/rosdep/sources.list.d ERROR: error loading sources list:The read operation timed out
我是校園網,如果依然報錯,請嘗試橋接!!!!!!具體解決如下:
4.4 通過橋接解決 rosdep update time out error
過程如下(按順序):
4.4.1 虛擬機選擇橋接(校園網選擇NAT):
4.4.2 打開 allow lan:
設置端口號,clash默認為7890。
4.4.3 宿主機查看ip地址:
打開cmd,ipconfig查看宿主機ipv4地址(一般為第一部分內容之中的ipv4地址):
4.4.4 Ubuntu設置proxy:
4.4.5 Ubuntu安裝proxychains
在ubuntu命令行使用代理,需要安裝proxychains:
sudo apt-get install proxychains配置端口:
sudo nano /etc/proxychains.conf添加以下內容:
socks5 宿主機ip地址 端口號例如:
設置軟鏈接
首先查找文件
將查找到的內容復制,對下述文件進行修改:
sudo gedit /usr/bin/proxychains宿主機不要選擇全局模式,而要選擇RULE模式。
如果要使用代理,命令行中的命令前添加proxychains即可!
運行命令:
proxychains rosdep update成功解決如圖:
4.5 測試小海龜
運行:
roscore
測試:打開第二個終端,運行如下命令,出現一只小海龜
如果希望小海龜移動,打開第三個終端,并運行:
rosrun turtlesim turtle_teleop_key然后在運行該命令的命令行窗口選中的情況下,使用鍵盤的上下左右控制小海龜運動。
如圖:
至此安裝成功!!!
參考:
總結
以上是生活随笔為你收集整理的Ubuntu20.04安装ROS教程(虚拟机/双系统,含报错解决)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java正则表达式判断浮点_java正则
- 下一篇: 新手学堂之有刷/无刷动力电调与马达知识