1. 程式人生 > >Ardupilot 軟體在環SITL模擬學習

Ardupilot 軟體在環SITL模擬學習

目錄

文章目錄

摘要


本文主要學習Ardupilot 的軟體在環SITL模擬功能!需要的工具:ardupilot韌體程式碼+Missionplanner地面站;這裡我用的是3.6韌體
Ardupilot飛控韌體本身已經做的很完善了,但是如果我們需要定製特定的程式碼,需要修改程式碼。修改程式碼完成特定的功能後,就需要飛行驗證。
如果直接去飛行,有可能會出現意外,造成不必要的損失,並且每次出去測試需要找一定的場所,花費時間和經歷!
因此要是可以在電腦上模擬自己修改程式碼完成的功能就好了???以至於我們可以在電腦上模擬一個模擬的環境來驗證修改後的程式碼的有效性!!!
幸運的是:Ardupilot韌體程式碼中集成了模擬程式,我們只需要做一些簡單的設定就可以方便地搭建出一個執行在電腦上的完全模擬真實飛行的模擬環境。
本節基於ardupilot的多旋翼韌體arducopter進行SITL模擬學習


參考資料:ardupilot官網SITL地址



1.配置SITL功能



  • Step #1 - Install VMWare and create an Ubuntu Virtual Machine
  • Step #2 - Start the VM for the first time
  • Step #3 - Setting up shared partition with Windows & Ubuntu Virtual Machine

以上三步不再敘述,主要配置虛擬機器VM


  • Step #4 - install packages on your VM

開啟一個終端並鍵入以下內容來更新軟體中心的軟體包列表:

在終端輸入下面命令:sudo apt-get update

在這裡插入圖片描述

然後安裝下面的軟體包(答覆“Y”,如果它提示你使用了額外的磁碟空間)

sudo apt-get install python-dev dos2unix python-wxgtk2.8 python-matplotlib python-opencv python-pip g++ g++-4.7 gawk git ccache

sudo pip install pymavlink
sudo pip install mavproxy

如果您希望執行飛機,您還需要安裝這些軟體包:

sudo apt-get install libexpat1-dev auto.conf libtool automake

  • Step #5 - Follow the Linux instructions

檢視電腦IP
在這裡插入圖片描述


配置地面站:UDP+115200


在這裡插入圖片描述



  • Step #6 - 切換到VM終端

輸入:自己飛控韌體的目錄:
cd Desktop/apmv5/arducopter/ArduCopter(根據自己的目錄來定)
終端繼續執行命令:

../Tools/autotest/sim_vehicle.py --console --map

編譯後的介面


在這裡插入圖片描述


編譯成功後,繼續命令:


output add 192.168.159.1:14550(注意這裡192.168.190.1是自己的IP地址,根據自己電腦替換)

在這裡插入圖片描述

然後開啟missionplanner點選連結就可以
在這裡插入圖片描述
顯示介面
在這裡插入圖片描述



第一部分總結:

  • 配置環境這裡講解的不詳細,大家可以參考官網,我配置時,有很多命令執行都不對,但是後面還是可以模擬的
  • 這個關鍵的命令是

(1)切換到自己的ArduCopter目錄:

cd Desktop/apmv5\(10-19)/ardupilot/ArduCopter

(2)編譯模擬程式碼

../Tools/autotest/sim_vehicle.py --console --map

(3)輸入連結地面站命令

output add 192.168.159.1:14550

(4)進入地面站,設定UDP+115200,然後點選連線按鈕就可以



2.SITL指令學習



1.如何起飛

輸入下面命令

arm throttle
rc 3 1800

在這裡插入圖片描述

在這裡插入圖片描述

會看到地面站顯示無人機在自穩模式下:一直爬升


2.如何上鎖


disarm

3.如何降落


mode land
rc 3 1500

在這裡插入圖片描述
在這裡插入圖片描述


4.如何修改模式


注意引數要小寫

懸停模式:mode LOITER
自穩模式:mode STABILIZE
懸停著落:mode LAND
返航模式:mode RTL
繞圈模式:mode CIRCLE
自動模式:mode AUTO
剎車模式:mode BRAKE
('Available modes: ', ['STABILIZE', 'LAND', 'OF_LOITER', 'RTL', 'DRIFT', 'FLIP', 'AUTOTUNE', 'BRAKE', 'GUIDED_NOGPS', 'AVOID_ADSB', 'POSITION', 'SPORT', 'FLOWHOLD', 'POSHOLD', 'AUTO', 'GUIDED', 'ACRO', 'SMART_RTL', 'ALT_HOLD', 'LOITER', 'CIRCLE', 'THROW'])


如果你新增加了自己的模式,怎麼辦?
可以採用:mode 數字

enum control_mode_t {
    STABILIZE =     0,  // manual airframe angle with manual throttle
    ACRO =          1,  // manual body-frame angular rate with manual throttle
    ALT_HOLD =      2,  // manual airframe angle with automatic throttle
    AUTO =          3,  // fully automatic waypoint control using mission commands
    GUIDED =        4,  // fully automatic fly to coordinate or fly at velocity/direction using GCS immediate commands
    LOITER =        5,  // automatic horizontal acceleration with automatic throttle
    RTL =           6,  // automatic return to launching point
    CIRCLE =        7,  // automatic circular flight with automatic throttle
    LAND =          9,  // automatic landing with horizontal position control
    DRIFT =        11,  // semi-automous position, yaw and throttle control
    SPORT =        13,  // manual earth-frame angular rate control with manual throttle
    FLIP =         14,  // automatically flip the vehicle on the roll axis
    AUTOTUNE =     15,  // automatically tune the vehicle's roll and pitch gains
    POSHOLD =      16,  // automatic position hold with manual override, with automatic throttle
    BRAKE =        17,  // full-brake using inertial/GPS system, no pilot input
    THROW =        18,  // throw to launch mode using inertial/GPS system, no pilot input
    AVOID_ADSB =   19,  // automatic avoidance of obstacles in the macro scale - e.g. full-sized aircraft
    GUIDED_NOGPS = 20,  // guided mode but only accepts attitude and altitude
    SMART_RTL =    21,  // SMART_RTL returns to home by retracing its steps
    FLOWHOLD  =    22,  // FLOWHOLD holds position with optical flow without rangefinder
    FOLLOW    =    23,  // follow attempts to follow another vehicle or ground station
    ZIGZAG    =    24,  // ZIGZAG mode is able to fly in a zigzag manner with predefined point A and point B
};

例如:mode 24 就是切換到你新定義的模式
在這裡插入圖片描述


實現這些命令的引數在哪呢?進入ardupilot/Tools/scripts目錄



5.如何修改遙控器輸入


橫滾命令: rc 1  1200
俯仰命令: rc 2  1200
油門命令: rc 3   1200
偏航命令: rc 4    1600

在這裡插入圖片描述

在這裡插入圖片描述

上面引數下載地址:引數設定表


6.如何修改引數


可以在地面站的引數列表直接修改引數,進行模擬,這裡距離繞圈模式:
設定繞圈半徑:circle_radius=2000cm
繞圈角速率;20deg/s

在這裡插入圖片描述

在這裡插入圖片描述