設備及系統版本:
PC端:
- Lenovo Y7000P + Ubuntu18.04 + ROS Melodic,
- 如果使用電腦也為此型號,系統建議安裝Ubuntu18.04,因為安裝16.04后會缺少獨顯、觸摸版、無線網卡等驅動,后續安裝也很麻煩,其他型號電腦可根據電腦情況自選,只是在按照官方說明書除錯時要注意切換ROS版本(Ubuntu18.04對應ROS Melodic;Ubuntu16.04對應ROS Kinetic),

TurtleBot3:
-
樹莓派3B+ + 官網e-Manual提供的TurtleBot3 Raspbian image for Raspberry Pi 3B+鏡像(基于Ubuntu16.04,已包含ROS Kinetic及一些turtlebot3需用的packages)

-
起初為了樹莓派和PC的Ubuntu版本一致,所以安裝了官網e-Manual提供的 Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3,沒有圖形化界面,配置起來比較繁瑣,e-Manual中也沒有對應此版本的教程,需根據Kinetic中的教程進行修改(比如命令中包含Kinetic時,應改為Melodic),后面因為在“8.Autonomous Driving”中無法enable攝像頭而放棄,此文最后附上了此系統下除錯時的一些爬坑筆記,若使用此系統且還想試一試的同學可參考一下,若在8.2.1中能成功開啟攝像頭還煩請指教一下,

-
后來重新使用e-Manual提供的系統鏡像進行配置,只能說真香,可省去很多步驟,主要是穩定,
-
經過除錯發現PC和樹莓派Ubuntu、ROS版本不同也可,
參考教程:
主要參考(本文的debug也是針對此網站給出的e-Manual,)
- ROBOTIS官網的e-Manual
https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/
此網站需科學上網,否則打開網頁特別慢,
其他可參考:
- ROS官方教材:https://community.robotsource.org/t/download-the-ros-robot-programming-book-for-free/51(可點此直接下載 ROS Robot Programming (English) ;ROS機器人編程 (中文) )
- 創客智造https://www.ncnynl.com/turtlebot3.html
- 以及各路神仙的博客
爬坑筆記:
提示:我直接寫e-manual中的章節號,便于定位,非筆記章節號,
3. Quick Start Guide
在設定3.1 PC setup 和3.2 SBC Setup時,注意要選對上面的ROS版本,Ubuntu18.04對應ROS Melodic;Ubuntu16.04對應ROS Kinetic,尤其PC端和樹莓派端Ubuntu版本不一致時,注意切換,
3.1.2. Install ROS
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh
在運行此步時,可能報錯,原因是raw.githubusercontent.com這個網站是外網,在ROS的安裝和使用中經常遇到,解決方法如下:
-
方法1:科學上網
-
方法2:連接手機熱點,多執行幾次,有概率可解決,
-
方法3:修改hosts
sudo nano /etc/hosts在最下面添加:
151.101.84.133 raw.githubusercontent.com保存后重新運行指令即可,
-
當然此處也可按照下面的提示,直接使用官方的ROS安裝,但ROS安裝的最后一步rosdep init的時候也會出現這個問題,仍需上述方法來解決,

3.1.4. Install TurtleBot3 Packages

如果想要新建workspace,先無需運行apt-get install,否則還需運行下面Click here to expand中的spt-get remove,
3.1.6. Network Configuration

此處圖片并非要操作什么,只是示意,此處也無需設定TurtleBot,也可忽略此處直接看后面步驟操作,
- 此圖是說明要在TurtleBot和PC的.bashrc中添加兩句代碼用來設定ROS通訊的IP,其中PC端在此步驟設定,注意兩個IP均為PC的IP,TurtleBot端在3.2中設定,此處可忽略,區別是TurtleBot中設定的是PC的IP和Turtlebot的IP,
3.2.3.3. SSH
sudo ssh pi@192.168.x.x
無需大括號,必要時加sudo,
固定IP的方法
此處插播一條固定IP的方法,否則每次PC端和樹莓派端關機重啟連接wifi,會被動態分配不同的IP,導致ssh失效,還需重新查詢,并更改.bashrc中的IP,
第一種情況:PC端和樹莓派端在第三端路由器發射出來的局域網內
- 通過網頁輸入ip的方法,進入路由器管理界面,不同路由器的管理界面ip不同,可查看路由器背面的標簽或者百度一下(參考https://www.win7sky.com/luyouqidizhi/20170630-4508.html),華為路由器的管理界面中有固定一個設備的IP的功能,其他路由器應該也可,自行百度,找到自己的PC和樹莓派,固定IP即可,
第二種情況:PC端發熱點,樹莓派連接到PC端的熱點上,
- PC端發每次熱點IP是固定的,也可用nm-connection-editor自定義IP,然后根據PC端的IP設定樹莓派端,(方法參考https://www.feifeiboke.com/pcjishu/3617.html) 即在 /etc/dhcpcd.conf中設定static ip,此conf檔案中有設定格式,192.168.x.x/24中的 /24 表示子網掩碼為255.255.255.0,
3.2.3.8 設定IP
注意事項見上述3.1.6
3.3.7 驗證OpenCR
- 確保是用turtlebot自帶的電池或者其他12v的電源給OpenCR供電,且打開了OpenCR板子上的開關,否則舵機帶不動,下圖開關狀態為打開,

- 如果原來是用MicroUSB的5v電源給樹莓派供電想要拔除,直接拔除會造成關機,可先連接OpenCR的12v電源,打開開關,然后再拔除樹莓派MicroUSB供電線,(樹莓派和OpenCR的電源是互通的,樹莓派接5v或者OpenCR接12v均可同時開啟兩個板子,但是如果想讓輪子轉動,必須確保OpenCR接入了電池或者其他12v電源,)
- 先按一下最大的那個,RESET;然后長按旁邊SW1或SW2,至少5秒,看輪子是否轉動,想要停下按RESET即可,
3.5.1. Run roscore
若要運行樹莓派中的ROS命令,則必須保持PC端的roscore是啟動狀態,
3.6.1.1.1. Keyboard Teleoperation
運行teleop應同時運行樹莓派中的bringup
3.6.1.2. RC100
若使用ROBOTIS RC100手柄(只有TurtleBot3 Waffle Pi里面有帶),可無需運行任何指令,因為手柄是通過藍牙和OpenRC直接通訊,不經過樹莓派,通訊指令是在3.3中上傳到OpenCR中的,
4.2.SLAM
export TURTLEBOT3_MODEL=${TB3_MODEL}
無需每次都要輸入此句,因為已經寫進.bashrc中了,可打開.bashrc檢查一下,如沒有運行一次即可,無需重復,
4.2.3 Mapping
建圖時,受雷達傳感器性能的限制,不要讓機器人運動太快,也不要原地快速轉動,容易造成地圖混亂,
4.5.1 Save Map
如果在前面3.14中建立了新的workspace,建議在此處將map的儲存路徑改為自己的ws中,便于管理,名字也可根據實際環境更改,比如:
mkdir -p ~/catkin_ws/map
rosrun map_server map_saver -f ~/catkin_ws/map/labmap
但后面5.1.3中運行navigation時應注意修改map.yaml的路徑和名字
5.2.&5.3. Navigation
表述的文字有點多,白話說一下:
- 第一步:先用2D Pose Estimate給機器人定位,使雷達線的輪廓與地圖盡量接近,此時可根據實際中機器人所在房間的位置來設定這個Pose,用墻角或者其他特征來判斷,
- 第二步:雷達線輪廓和地圖接近后,可使用teleop來對位置和方向進行進一步校正,使雷達線輪廓與地圖吻合,此處有個技巧:在第一步設定Pose的時候,以位置準確為主,方向可有偏差,然后在第二步的遙控校正時,僅校正角度即可,
- 第三步:用2D Nav Goal設定目標位置和方向,盡量不要給機器人出難題,因為內置演算法的引數還未優化,優化方法見5.4,
6.1.2 Launch Simulation World
三種機型和三種地圖可任意組合,比如使用的機型為burger,仍可roslaunch World和House仿真環境,但是第一次打開House會特別慢,可先用Empty和World來嘗試,尤其是電腦配置較低時,
6.2. SLAM Simulation
此處和4.2一樣,無需每次都要運行export,除非想要更換機器人模型,
附:PC端Ubuntu18.04 + 樹莓派端Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3 爬坑筆記
提示:上述提到過的坑在Ubuntu18.04中基本都有,就不重述了,下面是一些只在Ubuntu18.04中遇到的坑,
3.2.3.5 配置WIFI

Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3 只能在tty中除錯,沒有圖形化界面,所以在連接ssh前的配置wifi需要自己手動打代碼,
-
首先需一字不差的按照教程給的代碼編輯,代碼的層級也要注意,每個層級隔兩個空格,不能用tab,只能敲空格,還有冒號后的空格一定要有,
-
wifi name和password是帶有雙引號的,把里面的文字換成wifi名稱和密碼即可,例如:
access-points: "wifi": password: "12345678" -
此步之后在運行第6步之前,需運行以下命令:
sudo netplan generate #檢查代碼格式是否正確 sudo netplan apply #應用 ifconfig #此時即可查詢wifi設定是否成功,以及wlan0對應的IP
4. SLAM
從這里開始教程中就不支持Melodic了,但是按照Kinetic下面的教程進行還能繼續,
8.1.2. Install Autorace Packages
sudo apt-get install ros-kinetic-image-transport ros-kinetic-cv-bridge ros-kinetic-vision-opencv python-opencv libopencv-dev ros-kinetic-image-proc
此步安裝可能遇到python-opencv報錯,但是更改一下python版本,比如python3-opencv,可運行,但是不知道這樣是否正確,
8.2.1 Camera Imaging Calibration
此處打不開攝像頭,網上查了一些,都是在可視化界面中的操作,可是此版本系統沒有可視化界面,所以進行不下去了,如有大佬有辦法解決,請告知,感謝!
按照Robotis官網提供的e-Manual除錯的坑目前就只發現這么多,如果再有什么發現可以交流,本人Linux、ROS均為初學,若解決辦法錯誤或者有更好的辦法,歡迎指教,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247237.html
標籤:其他
上一篇:傳感器小結
