0.前言
之前寫過一篇使用 Parrot 家的 Bebop 2 無人機做目標識別和跟蹤轉向的小項目“ROS實現無人機目標跟蹤/物體跟隨/循跡”,但是由于硬件實物的條件限制,很多同學無法拿去用,為此我做了一些嘗試,希望可以在 Gazebo 仿真環境下使用 Parrot Bebop 2 進行實驗。
在這個系列的文中,我會結合 Bebop 實物和仿真一起來說,這樣無論大家手中有沒有 Bebop 實物都可以跟著一起來做一下這個小項目。
由于目前還有一些科研任務,所以這個系列可能更新的稍微慢一些,把現有的工作整合一下先發出來,之后可能會不定時的更新一下新的進展。
Bebop無人機的一些優勢
1.不需要涉及無人機底層動力學的運動控制(畢竟商品級無人機),比較適合需要快速的對如軌跡規劃、跟蹤控制、編隊控制等理論進行實物驗證的場景
3.飛行器控制相對簡單,可以一個指令就實現起飛并懸停、降落,只需要向 cmd_vel 發送指令就可以實現水平方向的加速度運控制和垂直方向的速度控制
4.自身帶有攝像頭,可以直接調用圖傳畫面用作視覺處理
5.社區環境較好,國外有基于 Bebop 的很多開源項目
6.可以在 Gazebo 中進行仿真,只需要稍加改動就可以直接移植到實物中
規劃
我想盡可能的將把這個系列做成只需要一點點ROS基礎甚至0基礎的同學都可以上手做的程度,所以希望大家有什么問題可以在評論區回復,有不明白的地方我也會積極修正。
按目前已有的項目進展來整理的話,本系列計劃分為如下幾個部分:
1.介紹Bebop在Gazebo仿真環境的搭建
2.Bebop與ROS通訊,實現簡單的指令控制
3.OpenCV中顏色和特征物體的識別
4.仿真環境中實現無人機對目標的識別和跟蹤
5.Bebop的軌跡控制(待定)
6.多無人機編隊控制(待定)
1. 環境搭建
本項目在 Ubuntu 18.04 和 ROS Melodic 環境下進行。
經測試,在虛擬機狀態下本項目不能成功運行。
首先安裝?Parrot-Sphinx,打開終端
echo "deb http://plf.parrot.com/sphinx/binary `lsb_release -cs`/" | sudo tee /etc/apt/sources.list.d/sphinx.list > /dev/null sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 508B1AE5 sudo apt-get update sudo apt-get install parrot-sphinx
根據提示輸入當前用戶然后重新登陸用戶即可安裝完成。
因為墻的原因,可能會比較慢,耐心等待即可
之后打開終端,輸入
sudo systemctl start firmwared.service fdc ping
若得到 PONG 的響應,則說明firmwared服務啟動成功。
若需要關閉firmwared服務,則在終端輸入
sudo systemctl stop firmwared.service
在終端查看ip接口
sudo apt install net-tools ifconfig
?
?
記錄下來上面的那個接口名,我這里的是?enp30s0
接下來按照步驟修改drone文件
cd /opt/parrot-sphinx/usr/share/sphinx/drones/sudo gedit bebop2.drone
如圖所示,將高亮部分換成你上面記錄的接口名并保存,我這里改為?enp30s0
啟動Gazebo仿真環境
sudo sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone
稍等片刻就會看到Gazebo界面里出現了一架bebop2無人機
注意此時的電腦會斷網,這是正?,F象,關閉Gazebo界面后即可恢復正常。
此時如果關閉Gazebo窗口,查看 ifconfig 會發現接口名變成了eth0,再次修改drone文件即可重新運行。(每次運行只需要修改一次,重啟后需要再改回原來的接口名,具體以ifconfig中查閱的為主)
至此,Bebop2的仿真環境已經搭建完畢
接下來就是建立Bebop與ROS的通訊了,由于接下來通過ROS指令控制Bebop運動時,仿真環境和實物控制中差別不大,我會將兩者放在一起來說。
編輯:黃飛
評論