學了好久,然后依然很混亂,于是決定整理一下筆記
安裝 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步:
- 去官網下載鏡像
- 安裝Etcher,并把鏡像寫入TF卡
- 在啟動分區新建一個名為 SSH 的文件夾
配置 Raspbian
配置時需要說明的更多一些,但其實要做的東西也很少,熟悉之后幾分鐘就能搞定。
在這部分需要做的事情是:
- 將樹莓派接入網絡
- 設置SSH
- 更改Host和密碼
- 設置語言與時區
- 調整分辨率并開啟VNCServer
- 配置FTP
將樹莓派接入網絡
注意,在這部分,你最好使用路由器來建立局域網。
一開始如果能用鍵鼠和顯示器,就能很輕松的連接上無線網絡。如果沒有,也可以先通過網線將樹莓派連接入局域網(需要有DHCP分配IP地址,所以校園網不行)。
接好網線后,裝上剛才制作好的TF卡,然后連接電源。大約20秒后,就可以通過SSH訪問樹莓派了。
Windows下常用的SSH軟件是PuTTY,但是這個官網是“不存在的”,所以從這里下載。綠色軟件,解壓即可使用。
運行putty.exe,填入主機名稱 raspberrypi,點擊 open 按鈕,即可開啟鏈接。
首次連接會提示Host key未知(或不一致),因為是自己的樹莓派,添加即可。
提示 login as: 時,輸入用戶名 pi
提示 pi@raspberrypi's password: 時,輸入密碼,默認是raspberry
登錄成功是這樣的:
這時,樹莓派的命令行界面(終端)就顯示在putty中了,在putty中的操作和在樹莓派上直接操作的效果是一樣的。輸入exit可以退出終端,如果putty界面關閉,終端內運行的命令也都會結束。
配置SSH
生成SSH的密鑰
因為使用PuTTY登陸,所以此時最好使用PuTTY自帶的生成器來生成密鑰。打開puttygen.exe,并選擇Generate,之后會提示在空白處隨意移動鼠標以生成隨機數。
之后會顯示生成的密鑰信息,如下圖:
圖中①是公鑰(鎖),私鑰(鑰匙)并不會顯示出來。在②處設置使用此私鑰時需要輸入的密碼(可以不設置密碼),在③處保存私鑰,一般不需要保存公鑰(因為載入私鑰后就會顯示公鑰)。
設置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,使用私鑰登陸。
測試使用私鑰登陸
先填入主機名,
先填入主機名,然后在putty的左側選擇 Connection 中 SSH 的 Auth,在右側最下方 Private key file for authentication中選擇剛才保存的私鑰。點右下角Open,啟動終端,在輸入用戶名后若顯示 Authenticating with public key "……" 則說明私鑰認證成功。若私鑰沒有密碼,則直接登陸成功。若有密碼,則提示輸入:
若使用私鑰登陸成功,則可以關閉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
選擇第一項更改密碼,確認后,輸入密碼回車,再次輸入密碼回車。成功會顯示密碼更改成功。確認后返回程序主界面。
選擇第二項更改 Hostname ,提示只能使用小寫字母及0~9的數字及連字符 -,確認后輸入,按回車確認。
設置語言與時區
選擇第四項 Localisation Options
其中第一項是更改語言設置,第二項是更改時區。
按空格取消或選中選項,選中zh_CN.UTF-8
按 Tab鍵 移動光標至 Ok,回車。
按下鍵移動光標至zh_CN.UTF-8,回車。
稍等片刻后會返回設置界面。
開啟VNCServer并調整分辨率
選擇第5項 Interfacing Options
其中第3項是開啟VNCServer(遠程桌面)
選擇第3項,并移動到Yes,回車。確認后返回主界面。
選擇第7項 Advanced Options
其中第5項是更改分辨率
選擇第5項,選擇1280x720,回車。確認后返回主界面。
按Tab鍵移動到Finish,回車,會提示重啟,選擇Yes,回車。
由于樹莓派重啟,終端連接斷開,會提示網絡連接意外斷開,如下圖:
確認后PuTTY會進入非激活狀態,關閉窗口,如下圖:
配置連接設置
重新打開putty.exe,輸入新的主機名,設置私鑰。
在左側 Connection 中選擇 Data ,在右側中第一項中輸入自動登陸用戶名 pi 。
在左側選擇 Session,在 Save Sessions 中輸入登錄設置名稱,點右側Save保存設置。
然后雙擊配置名啟動終端。
設置VNC Viewer并連接無線網絡
我們常用VNC Viewer來連接樹莓派,來使用桌面功能。
新建一個鏈接,并在VNC Server中輸入主機名,點Ok開啟鏈接
會提示認證失敗,可能不安全,點繼續。
然后輸入登錄的用戶名和密碼。
在右上角設置無線連接,選擇自己的網絡,并輸入密碼。
配置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