ROS學習筆記1:在樹莓派3上部署ROS

學了好久,然后依然很混亂,于是決定整理一下筆記

安裝 Raspbian jessie

安裝 Raspbian 非常簡單,只需要三步:

  • 下載鏡像
  • 寫入TF卡(MicroSD)
  • 開啟SSH

下載鏡像

首先打開樹莓派官網,點擊 DOWNLOADS,然后選擇 RASPBIAN,來到Raspbian下載頁面,下載 RASPBIAN JESSIE WITH PIXEL 的種子。通過種子來下載會快一些,而且下載后不需要校驗。

下載種子

寫入TF卡

官方推薦使用Etcher來寫入,試用了一下,簡單快捷,不過有的情況會出錯,沒有查出來原因。

  • 下載 Etcher 并安裝。
  • 把TF卡插入讀卡器并連接電腦。
  • 打開 Etcher ,從硬盤上選擇剛才下載的鏡像。
  • 選擇你要寫入的TF卡。
  • 檢查確認你的選項,并點擊“Flash!”開始寫入。

寫入時系統可能會提示驅動器未格式化,千萬不要格式化
寫入完成后,可以看到TF卡有兩個分區(驅動器):一個是啟動分區,可以打開;另一個是系統分區,Windows不能識別,顯示未格式化。

開啟SSH

單獨為樹莓派3準備一套鍵鼠和顯示器是很奢侈的事情,所以開啟SSH就變成了通常做法。
打開啟動分區,在里面新建一個文件夾,命名為 SSH 。

~回顧一下

上面大部分內容其實都是在解釋說明,要做的其實很少,只有以下3步:

  1. 去官網下載鏡像
  2. 安裝Etcher,并把鏡像寫入TF卡
  3. 在啟動分區新建一個名為 SSH 的文件夾

配置 Raspbian

配置時需要說明的更多一些,但其實要做的東西也很少,熟悉之后幾分鐘就能搞定。
在這部分需要做的事情是:

  • 將樹莓派接入網絡
  • 設置SSH
  • 更改Host和密碼
  • 設置語言與時區
  • 調整分辨率并開啟VNCServer
  • 配置FTP

將樹莓派接入網絡

注意,在這部分,你最好使用路由器來建立局域網。
一開始如果能用鍵鼠和顯示器,就能很輕松的連接上無線網絡。如果沒有,也可以先通過網線將樹莓派連接入局域網(需要有DHCP分配IP地址,所以校園網不行)。
接好網線后,裝上剛才制作好的TF卡,然后連接電源。大約20秒后,就可以通過SSH訪問樹莓派了。
Windows下常用的SSH軟件是PuTTY,但是這個官網是“不存在的”,所以從這里下載。綠色軟件,解壓即可使用。
運行putty.exe,填入主機名稱 raspberrypi,點擊 open 按鈕,即可開啟鏈接。

PuTTY的界面

首次連接會提示Host key未知(或不一致),因為是自己的樹莓派,添加即可。

Paste_Image.png

提示 login as: 時,輸入用戶名 pi
提示 pi@raspberrypi's password: 時,輸入密碼,默認是raspberry

Paste_Image.png

登錄成功是這樣的:

Paste_Image.png

這時,樹莓派的命令行界面(終端)就顯示在putty中了,在putty中的操作和在樹莓派上直接操作的效果是一樣的。輸入exit可以退出終端,如果putty界面關閉,終端內運行的命令也都會結束。

配置SSH

生成SSH的密鑰

因為使用PuTTY登陸,所以此時最好使用PuTTY自帶的生成器來生成密鑰。打開puttygen.exe,并選擇Generate,之后會提示在空白處隨意移動鼠標以生成隨機數。

Paste_Image.png

之后會顯示生成的密鑰信息,如下圖:


Paste_Image.png

圖中①是公鑰(鎖),私鑰(鑰匙)并不會顯示出來。在②處設置使用此私鑰時需要輸入的密碼(可以不設置密碼),在③處保存私鑰,一般不需要保存公鑰(因為載入私鑰后就會顯示公鑰)。

設置SSH公鑰

存儲私鑰后復制①處的公鑰,然后在putty界面中依次輸入以下命令:

$ mkdir ~/.ssh
$ echo ssh-rsa AAAAB3……把本行ssh到最后的部分替換成自己的公鑰……8xyFzQ== rsa-key-20170521
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

** 解釋一下上面的命令:**

  • $ 表示行首的提示符,在終端會以“用戶名@計算機名: 路徑 $”的格式顯示,比如 pi@raspberrypi:~ $,表示用戶pi在計算機raspberrypi上,當前路徑是pi的home目錄。
    ~ 表示用戶的home目錄,也就是每個用戶自己的主目錄,用戶所有的文件都會存在這個主目錄下面。
    / 表示系統的根目錄,所有的文件都“放”在這個根目錄下面。
    在教程中為了避免混亂,一般不寫$之前的信息,寫$以區分每一行命令。
  • 以$開頭的每一行都是一行命令,一行命令會包含命令參數
    每一行命令第一個空格之前是命令,之后是參數,參數以空格分隔。一個命令可以使用參數調用另一個命令。
    使用 “man 命令名”,可以查看命令的使用方法;也可以使用“命令名 --help” 來查看幫助。
  • 如果一行命令執行中不需要輸入內容,比如確定yes or no,那么可以將這樣的多行命令同時復制入putty,在putty中,右鍵為粘貼,左鍵框選復制。上面這幾行內容都沒有確認提示,所以可以先在筆記中編輯好,然后一起復制到終端里,注意最后一行可能需要手動回車。
  • 上面使用的幾條命令中:
    mkdir 的功能是建立目錄,
    echo顯示內容,常與 > 或者 >> 配合使用來更改文件內容。> 功能是將輸出內容保存為文件,>> 功能是將輸出內容追加到文件。
    chmod 的功能是改變文件或目錄屬性。

上述命令執行后,可以新打開一個putty,使用私鑰登陸。

測試使用私鑰登陸

先填入主機名,


Paste_Image.png

先填入主機名,然后在putty的左側選擇 Connection 中 SSH 的 Auth,在右側最下方 Private key file for authentication中選擇剛才保存的私鑰。點右下角Open,啟動終端,在輸入用戶名后若顯示 Authenticating with public key "……" 則說明私鑰認證成功。若私鑰沒有密碼,則直接登陸成功。若有密碼,則提示輸入:

Paste_Image.png

若使用私鑰登陸成功,則可以關閉SSH的密碼登陸,以提高安全性。

$ sudo nano /etc/ssh/sshd_config

找到:
PasswordAuthentication yes
修改為:
PasswordAuthentication no
按Ctrl+X退出,按y保存,回車確定保存名稱。

nano 是 linux 中常用的文本編輯器,沒有vim那么高大上,但是簡單易用。

更改設置后重啟ssh服務以使設置生效。

$ sudo systemctl restart ssh.service

更改Host和密碼

在網絡中,每個計算機都擁有自己唯一的名稱(主機名 Hostname,常簡稱Host),樹莓派系統默認的Host是raspberrypi,不具有唯一性,因此需要修改這個值。樹莓派有更改設置的命令行程序raspi-config

$ sudo raspi-config
Paste_Image.png

選擇第一項更改密碼,確認后,輸入密碼回車,再次輸入密碼回車。成功會顯示密碼更改成功。確認后返回程序主界面。

Paste_Image.png

選擇第二項更改 Hostname ,提示只能使用小寫字母及0~9的數字及連字符 -,確認后輸入,按回車確認。

設置語言與時區

選擇第四項 Localisation Options

Paste_Image.png

其中第一項是更改語言設置,第二項是更改時區。
按空格取消或選中選項,選中zh_CN.UTF-8

Paste_Image.png

按 Tab鍵 移動光標至 Ok,回車。
按下鍵移動光標至zh_CN.UTF-8,回車。
稍等片刻后會返回設置界面。

開啟VNCServer并調整分辨率

選擇第5項 Interfacing Options
其中第3項是開啟VNCServer(遠程桌面)
選擇第3項,并移動到Yes,回車。確認后返回主界面。
選擇第7項 Advanced Options
其中第5項是更改分辨率
選擇第5項,選擇1280x720,回車。確認后返回主界面。
按Tab鍵移動到Finish,回車,會提示重啟,選擇Yes,回車。
由于樹莓派重啟,終端連接斷開,會提示網絡連接意外斷開,如下圖:


Paste_Image.png

確認后PuTTY會進入非激活狀態,關閉窗口,如下圖:


Paste_Image.png

配置連接設置

重新打開putty.exe,輸入新的主機名,設置私鑰。
在左側 Connection 中選擇 Data ,在右側中第一項中輸入自動登陸用戶名 pi 。

Paste_Image.png

在左側選擇 Session,在 Save Sessions 中輸入登錄設置名稱,點右側Save保存設置。

Paste_Image.png

然后雙擊配置名啟動終端。

設置VNC Viewer并連接無線網絡

我們常用VNC Viewer來連接樹莓派,來使用桌面功能。
新建一個鏈接,并在VNC Server中輸入主機名,點Ok開啟鏈接
會提示認證失敗,可能不安全,點繼續。
然后輸入登錄的用戶名和密碼。


Paste_Image.png

在右上角設置無線連接,選擇自己的網絡,并輸入密碼。

配置FTP

執行下列命令以安裝vsftpd FTP服務器

$ sudo apt update
$ sudo apt install vsftpd -y
$ sudo service vsftpd start
$ sudo nano /etc/vsftpd.conf

找到以下項,并更改。# 開頭的行表示注釋,常用#來關閉某項設置,可以刪除設置前的 #,以使該項生效。
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

$ sudo service vsftpd restart

之后可以使用WinSCP等軟件以FTP方式登錄樹莓派。

建議在配置完后備份TF卡。

安裝 ROS Kinetic

調整頁面文件大小

增加頁面文件大小是為了解決編譯時內存不足的問題。

$ sudo nano /etc/dphys-swapfile

找到 CONF_SWAPSIZE ,并將值修改為2048,保存退出并重啟樹莓派。

配置源

$ sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

然后更新一下

$ sudo apt-get update
$ sudo apt-get upgrade

安裝依賴

$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

然后初始化一下

$ sudo rosdep init
$ rosdep update

編譯源碼

首先建立工作空間

$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

然后配置一下安裝文件,初始化工作空間,并下載源碼

$ rosinstall_generator desktop rosserial perception joystick_drivers --rosdistro kinetic --deps --wet-only --exclude perception_pcl --tar > kinetic-custom_ros.rosinstall
$ wstool init src kinetic-custom_ros.rosinstall
$ wstool update -t src

為源碼添加依賴

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y -r --os=debian:jessie
$ sudo cp /usr/share/cmake-2.8/Modules/FindEigen3.cmake /usr/share/cmake-3.6/Modules/

開始編譯

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic

編譯之后添加ROS配置到bash啟動項

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ echo "export EDITOR='nano -w'" >> ~/.bashrc

如果不用藍牙,可以選擇Ubuntu Mate

安裝可以按照x64下面的Ubuntu安裝,會簡單很多。

$ sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full

$ sudo rosdep init
$ rosdep update

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt install python-rosinstall
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,283評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,947評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,094評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,485評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,268評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,817評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,906評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,039評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,551評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,502評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,662評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,188評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,907評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,304評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,563評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,255評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,637評論 2 370

推薦閱讀更多精彩內容