1. 程式人生 > >ardupilot_gazebo模擬(三)

ardupilot_gazebo模擬(三)

ardupilot_gazebo模擬(三)

標籤(空格分隔): 未分類


建立ROS node 實現對無人機的控制(軟體在環)

MAVROS

MAVROS是ROS中的一個能夠連線支援MAVLink地面站、支援MAVLink飛控和ROS計算機的工具。

安裝MAVROS

Installing MAVROS
安裝參照官網即可

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod a+x install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

推薦安裝rqt

sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-rqt-robot-plugins

建立外部控制包

外部控制程式中文介紹
根據ROS官網教程,建立一個ROS包

cd ~/catkin_ws/src
catkin_create_pkg offboard roscpp mavros geometry_msgs

這時會在catkin_ws/src目錄中生成offboard資料夾,其中包含include和src兩個資料夾。我們將offboard_node.cpp放在剛剛生成的offboard/src中。修改offboard目錄下的CMakeLists.txt檔案,取消一些註釋生成相應節點。

    ## Declare a C++ executable
    ## With catkin_make all packages are built within a single CMake context
    ## The recommended prefix ensures that target names across packages don't collide
     add_executable(${PROJECT_NAME}_node src/offboard_node.cpp)
    
    ## Rename C++ executable without prefix
    ## The above recommended prefix causes long target names, the following renames the
    ## target back to the shorter version for ease of user use
    ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
    # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
    
    ## Add cmake target dependencies of the executable
    ## same as for the library above
    # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
    
    ## Specify libraries to link a library or executable target against
     target_link_libraries(${PROJECT_NAME}_node
       ${catkin_LIBRARIES}
     )

offboard_node.cpp是我們建立的節點的名字。

然後在catkin_ws中,進行編譯

cd ~/catkin_ws
catkin_make
source devel/setup.bash

每次要執行節點是都要source setup.bash

啟動模擬

01.啟動地面站MAVproxy

cd ardupilot/ArduCopter
sim_vehicle.py --map --console

02.launch MAVROS

roslaunch mavros apm.launch 

03.執行自己做的外部程式節點

cd catkin_ws/
source devel/setup.bash
rosrun offboard offboard_node

利用graph實時繪製曲線

graph是MAVproxy的一個module
用之前先要load graph

module load graph

常用引數監視

graph NAV_CONTROLLER_OUTPUT.nav_roll ATTITUDE.roll*57.32
graph NAV_CONTROLLER_OUTPUT.nav_pitch ATTITUDE.pitch*57.32
graph NAV_CONTROLLER_OUTPUT.nav_bearing ATTITUDE.yaw*57.32
graph VFR_HUD.alt 
graph VFR_HUD.climb 

NAV_CONTROLLER_OUTPUT 是期望資料
ATTITUDE 姿態需要乘以57.32變成角度

VFR_HUD.airspeed     VFR_HUD.climb        VFR_HUD.heading
VFR_HUD.alt          VFR_HUD.groundspeed  VFR_HUD.throttle

MAVprovxy控制無人機的指令

參考MAVproxy教程,官網給出了較完整的命令集
這裡只做最簡單的介紹,可以讓無人機飛起來。

mode guided
arm throttle
takeoff 40

其中一些飛航模式需要rc 3 在中立的位置,例如alt_hold loiter circle 模式等

rc 3 1500

在地面站還可以對引數進行設定

GUIDED> param show fence*
GUIDED> FENCE_ACTION     1.000000
FENCE_ALT_MAX    100.000000
FENCE_ENABLE     0.000000
FENCE_MARGIN     2.000000
FENCE_RADIUS     150.000000
FENCE_TYPE       3.000000