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



作者:一般的路人丙
鏈接:https://www.jianshu.com/p/887e6b2902d1
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章