ardupilot_gazebo模擬(三)
阿新 • • 發佈:2018-12-13
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
建立外部控制包
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