PIBOT上位機開發(fā)(ROS1/ROS2)

@[TOC]

1. 概述

采用樹莓派/RK3288/RK3399/X86工控機/TK1/TX1/TX2作為上位ROS主控,基于ROS開發(fā)適配導航建圖算法


2. 軟件框架

軟件框架圖

3. Ubuntu的刷入、ROS(ROS2)的安裝

具體請參考樹莓派(raspberrypi 3b/4b)安裝ROS

tf卡啟動的nanopi(RK3399) 則同樹莓派一樣操作


4. ssh遠程連接

windows中推薦安裝xshell遠程連接

樹莓派/nanopi rk3399默認開啟了熱點ssidpassword均為pibot_ap,可以通過連接該熱點連接樹莓派/nanopi rk3399臊泰,樹莓派/nanopi rk3399的IP為192.168.12.1

ap默認配置打開防嗡,如果需要重新配置,只需要執(zhí)行cd ~/pibot_ros/third_party/create_ap && ./config_ap.sh && sudo make install && cd ~/pibot_ros && ./pibot_ap.sh start

如需要關(guān)閉ap模式拍棕,改為連接wifi喻粹,只需要執(zhí)行cd ~/pibot_ros && ./pibot_ap.sh stop后重啟
如需要打開ap模式, 開啟則執(zhí)行cd ~/pibot_ros && ./pibot_ap.sh start后重啟

4.1 安裝xshell

網(wǎng)盤中下載xshell并安裝

通過Xshell連接樹莓派/RK3288/RK3399

輸入IP和用戶名密碼

  • 樹莓派3B/3B+pibot
  • firefly RK3288坏快、RK3399firefly
  • nanopi 3399pi
pibot_xshell.gif

5. 用戶主機

需要一個PC安裝ROS環(huán)境,用來顯示查看地圖或者玩轉(zhuǎn)模擬器等唯卖,PIBOT提供了一個一鍵安裝ROS的腳本pibot_install_ros粱玲,可以直接在Ubuntu下安裝ROS
用戶主機環(huán)境Ubuntu或者Windows7/10+Vmvare+Ubuntu虛擬機Ros kinetic環(huán)境, 安裝ROS參見Windows下安裝Ubuntu虛擬機及ROS相關(guān)章節(jié)


6. 多機通訊

用戶主機樹莓派/RK3288/RK3399/TK1/TX1/TX2/X86主機怎么建立ROS通訊的,PIBOT提供了一鍵配置腳本pibot_init_env

  • 設備端


    pibot_init_env_dev.gif
  • 主機端


    pibot_init_env_host.gif

7. ROS驅(qū)動開發(fā)

7.1 概述

下位機及通過串口與樹莓派/RK3288/RK3399/TK1/TX1/TX2/X86主機通訊拜轨,PIBOT提供了一個簡單的協(xié)議抽减,通訊協(xié)議具體請參見協(xié)議文檔

7.2 驅(qū)動開發(fā)及PID參數(shù)動態(tài)調(diào)整

PID參數(shù)已在出廠時候配置,如需了解細節(jié)請參考PIBOT的driver的實現(xiàn)及動態(tài)PID調(diào)節(jié)

7.3 目錄結(jié)構(gòu)簡介

建議拷貝提供的壓縮文件至目標設備(樹莓派/RK3288/RK3399/X86工控機/TK1/TX1/TX2)上解壓或者直接git clone橄碾,不然會遇到一些問題卵沉,具體問題見Q&A

PIBOTROS workspace目錄如下圖

  • arbotix_ros 模擬器
  • pibot 工具集
    pibot
  • pibot_bringup pibot驅(qū)動包
    pibot_bringup
  • pibot_description pibot urdf文件
    pibot_description
  • pibot_navigation 建圖導航相關(guān)配置項
    pibot_navigation
  • pibot_simulator pibot導航模擬器
    pibot_simulator
  • rplidar_ros rplidar激光雷達驅(qū)動包
  • ydlidar-1.2.1 eai激光雷達驅(qū)動包

7.4 編譯與測試

編譯

cd ~/pibot_ros
git fetch # 拉取最新的代碼
git pull
 # ros2 需要切換到ros分支,如 git checkout -b galactic-devel origin/galactic-devel
cd ~/pibot_ros/ros_ws
catkin_make   # ros2 為 pbmake

測試

初始化配置

重新拔插USB口或者重啟樹莓派/RK3288/RK3399

ls /dev/pibot -l

開始測試

打開終端輸入pibot_,再輸入2次tab提示支持的命令

pibot_cmd.gif

也可以輸入"alias | grep pibot_"查看所有命令的別名法牲,對應其ros的全命令史汗,如下圖

pibot@pibot~$ alias | grep pibot_
alias pibot_base='ros2 launch pibot_bringup robot_launch.py'
alias pibot_base_with_imu='ros2 launch pibot_bringup robot_launch.py'
alias pibot_bringup='ros2 launch pibot_bringup bringup_launch.py'
alias pibot_bringup_with_imu='ros2 launch pibot_bringup bringup_with_imu_launch.py'
alias pibot_cartographer='ros2 launch pibot_navigation cartographer.launch.py'
alias pibot_cartographer_with_odom='ros2 launch pibot_navigation cartographer.launch.py'
alias pibot_configure='ros2 run rqt_reconfigure rqt_reconfigure'
alias pibot_control='ros2 launch pibot_bringup keyboard_teleop_launch.py'
alias pibot_gmapping='ros2 launch pibot_navigation mapping.launch.py'
alias pibot_gmapping_with_imu='ros2 launch pibot_navigation mapping.launch.py'
alias pibot_holonomic_joystick='ros2 launch pibot_bringup joystick_launch.py joy_config:=joystick-holonomic'
alias pibot_joystick='ros2 launch pibot_bringup joystick_launch.py joy_config:=joystick'
alias pibot_lidar='ros2 launch pibot_lidar rplidar_launch.py'
alias pibot_mapping='ros2 launch pibot_navigation mapping.launch.py'
alias pibot_naviagtion='ros2 launch pibot_navigation navigation2.launch.py'
alias pibot_naviagtion_with_imu='ros2 launch pibot_navigation navigation2.launch.py'
alias pibot_save_map='ros2 launch pibot_navigation save_map.launch.py'
alias pibot_simulator='ros2 launch pibot_simulator nav_launch.py'
alias pibot_tf_tree='ros2 run rqt_tf_tree rqt_tf_tree'
alias pibot_view='rviz2 -d ${PIBOT_HOME}/ros_ws/src/pibot_navigation/rviz/nav2_default_view.rviz'
alias pibot_view_cartographer='rviz2 -d ${PIBOT_HOME}/ros_ws/src/pibot_navigation/rviz/nav2_default_view.rviz'

這些命令具體定義在~/.pibotrc文件,該文件是pibot_init_env腳本自動生成的


8. 校準

無IMU校準

參見PIBOT的控制及校準

IMU校準

參見PIBOT的IMU校準


9. ROS建圖與導航

9.1 概述

ROS驅(qū)動中提供了cmd_vel的訂閱及odom的發(fā)布,至此再需要一個激光雷達就可以完成建圖了

9.2 建圖

樹莓派/RK3288/RK3399運行pibot_gmapping
用戶主機運行pibot_view(ROS2中為``)

pibot_gmappingpibot_view在ROS1/2分別對應下面的命令

  • ROS1
roslaunch pibot_navigation gmapping.launch
roslaunch pibot_navigation view_nav.launch
  • ROS2
ros2 launch pibot_navigation mapping.launch.py
rviz2 -d ${PIBOT_HOME}/ros_ws/src/pibot_navigation/rviz/nav2_default_view.rviz

另外還可以運行pibot_cartographer命令執(zhí)行使用google cartographer建圖
ROS2中使用slam_box提供建圖

兩種建圖方法

  • 運行pibot_control或者pibot_joystick即可通過鍵盤或者遙控手柄開始建圖

pibot_controlpibot_joystick在ROS1/2分別對應下面的命令

  • ROS1
roslaunch pibot keyboard_teleop.launch
roslaunch pibot joystick.launch
  • ROS2
ros2 launch pibot_bringup keyboard_teleop_launch.py
ros2 launch pibot_bringup joystick_launch.py joy_config:=joystick
  • 直接選擇導航的點(2D Nav Goal)開始建圖

保存地圖

  • 運行下列pibot_save_map命令,如需手動指定路徑拒垃,可以使用ros原命令添加參數(shù)即可停撞,如下

pibot_save_map在ROS1/2分別對應下面的命令

  • ROS1
roslaunch pibot_navigation save_map.launch
roslaunch pibot_navigation save_map.launch map_name:=xxx
roscd pibot_navigation/maps/ && rosrun map_server map_saver -f xxx
  • ROS2
ros2 launch pibot_navigation save_map.launch.py
ros2 launch pibot_navigation save_map.launch.py map:=xxx

可以看到生成2個文件


10 導航

單點導航測試

樹莓派/RK3288/RK3399輸入pibot_naviagtion運行`

pibot_naviagtion在ROS1/2分別對應下面的命令

  • ROS1
roslaunch pibot_navigation nav.launch
roslaunch pibot_navigation nav.launch map_name:=xxx.yaml
  • ROS2
ros2 launch pibot_navigation navigation2.launch.py
ros2 launch pibot_navigation navigation2.launch.py map:=xxx

用戶主機運行pibot_view,通過RViz提供的功能既可以完成導航測試(這里需要先指定初始位置)

如果直接運行pibot_naviagtion則使用默認參數(shù)悼瓮,nav.launch文件中可以設置默認使用的地圖文件

多點導航

可以通過修改pibot/scripts中的navigation_demo.pypython腳本完成單點和多點的導航
具體可以參考
使用rospy啟動launch與定點導航
基于rospy的多點導航的python實現(xiàn)

11. 模擬器

PIBOT包內(nèi)置了模擬器怜森,可以直接運行pibot_simulator啟動模擬器

pibot_simulator在ROS1/2分別對應下面的命令

  • ROS1
roslaunch pibot_simulator nav.launch
- ROS2
```bash
ros2 launch pibot_simulator nav_launch.py

這樣無需小車也可以模擬導航了

12. Android App

12.1相關(guān)功能

保證手機跟跟PC或者樹莓派/RK3288/RK3399連接同一個網(wǎng)絡,保證手機能夠訪問到roscore(export ROS_IP=XXX.XXX.XXX.XXX)具體參見ROS多機的通訊配置


修改Master URI選擇roscoreURI 點擊CONNECT
切換Camera ViewMap View
android_app

  • Set Pose在地圖長按 相當于Rviz中的 2D Pose Estimate
  • Set Goal在地圖長按 相當于Rviz中的 2D Nav Goal
  • 左下角Joystick可以發(fā)出cmd_vel topic控制小車移動

12.2 顯示視頻

顯示視頻需要硬件攝像頭支持同時在PC或者樹莓派/RK3288/RK3399啟動roslaunch pibot usb_camera.launch
或者直接瀏覽器訪問192.168.12.1:8080選擇相應的Topic即可

192.168.12.1為設備地址, 以具體設備為準

手機APP ROS2 暫時不支持

13. IMU的相關(guān)包使用

裝有IMUPIBOT系列小車谤牡,底層提供IMU的數(shù)據(jù)采集副硅,上層提供了IMU的互補濾波以及融合里程計和IMU的擴展的卡爾曼濾波包robot_pose_ekf
啟動時只需相應的with_imulaunch文件, 具體參見pibot_命令

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翅萤,一起剝皮案震驚了整個濱河市恐疲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌套么,老刑警劉巖培己,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胚泌,居然都是意外死亡省咨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門玷室,熙熙樓的掌柜王于貴愁眉苦臉地迎上來零蓉,“玉大人笤受,你說我怎么就攤上這事〉蟹洌” “怎么了箩兽?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長章喉。 經(jīng)常有香客問我汗贫,道長,這世上最難降的妖魔是什么秸脱? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任落包,我火速辦了婚禮,結(jié)果婚禮上摊唇,老公的妹妹穿的比我還像新娘咐蝇。我一直安慰自己,他們只是感情好遏片,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布嘹害。 她就那樣靜靜地躺著,像睡著了一般吮便。 火紅的嫁衣襯著肌膚如雪笔呀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天髓需,我揣著相機與錄音许师,去河邊找鬼。 笑死僚匆,一個胖子當著我的面吹牛微渠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咧擂,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼逞盆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了松申?” 一聲冷哼從身側(cè)響起云芦,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贸桶,沒想到半個月后舅逸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡皇筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年琉历,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡旗笔,死狀恐怖彪置,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情换团,我是刑警寧澤悉稠,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布宫蛆,位于F島的核電站艘包,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耀盗。R本人自食惡果不足惜想虎,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叛拷。 院中可真熱鬧舌厨,春花似錦、人聲如沸忿薇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽署浩。三九已至揉燃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筋栋,已是汗流浹背炊汤。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弊攘,地道東北人抢腐。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像襟交,于是被迫代替她去往敵國和親迈倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容