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