天天看點

玩轉四旋翼無人機(仿真)

無人機的仿真方法,在ros環境下,有三種仿真方式,一種是mavros配合sitl的仿真,其次是hector_quadrotor ros package,還有一種就是就近ETH新出的一個gazebo環境仿真包。

三者對比

  • sitl的設定比較麻煩,而且飛機的控制使用指令來的。
  • hector_quadrotor開發的比較完善,可以使用xbox作為飛機的遙控器
  • rotorS是新出的包,裡邊給出了幾種商用的飛機模型,控制指令是ros meassage。

hector_quadrotor

install

這個包既可以直接apt-get

執行該指令會把該包的依賴包一起安裝好,另外也可以源安裝

mkdir ~/hector_quadrotor_tutorial
cd ~/hector_quadrotor_tutorial
wstool init src https://raw.github.com/tu-darmstadt-ros-pkg/hector_quadrotor/hydro-devel/tutorials.rosinstall
           

下載下傳完之後就是編譯

catkin_make
source devel/setup.bash
           

運作,啟動節點

使用xbox控制飛機

rotorS

install

首先安裝依賴包

下載下傳源檔案

cd ~/catkin_ws/src
git clone [email protected].com:ethz-asl/rotors_simulator.git
git clone [email protected].com:ethz-asl/mav_comm.git
           

然後編譯即可

catkin_make
           

運作節點

SITL

這裡介紹mavros配合sitl的仿真,另外介紹了如何使用mavros,給出了一些例程,并根據起launch檔案,找到了例程中的代碼的寫法。

wiki in ros

http://answers.ros.org/question/207097/how-to-send-velocity-to-pixhawk-with-mavros/

玩轉四旋翼無人機(仿真)

Tutorial

ROS Getting Started Tutorial

在教程中給出了連接配接一個USB camera, pixhawk,并確定基本的安裝能夠工作。

- 安裝stable ROS和ubuntu設定

- 連接配接USB,測試連接配接狀态

- MAVROS也就是ROS——PX4 mavlink bridge在GPU和飛控之間傳輸資料,我們需要手動開啟mavlink 資料流

  • launch the file test_rig.launch, tplease read the detail content.

    (launch之前需要修改udp的位址吧)

這時會看到mavros的連接配接至pxihawk的資訊,會如果連接配接camera正常會彈出image_view視窗。

代碼arm飛機需要如下步驟

- roslaunch mavros apm.launch

- rosrun mavros mavsafety arm

- rosrun mavros mavsys mode -c GUIDED that resulted: Mode changed

- and ran my code (with just yaw rotation -> twist.angular.z)

控制代碼例程

參考test_mavros packages

launch files start

main launch file iris_empty_world_offboard_ctl.launch
sub-launch 1 rotors_gazebo/launch/iris_empty_world.launch
sub-launch 2 px4/launch/iris.launch
sub-launch 3 mavros/launch/node.launch
sub-launch 4 test_mavros/launch/base_node.launch

test_mavros/launch/base_node.launch->

這裡sitl_test_node的主函數中隻是運作了SitlTest::spin(argc, argv);進入該函數是

testsetup::OffboardControl offboard_control;
offboard_control.spin(argc, argv);
           

那麼這個OffboardControl在檔案offboard_control.h中定義實作。

class OffboardControl::spin

{

初始化函數,設定參數。

設定周期

swtich mode

{}

}

該類的構造函數中topics

釋出

資訊類型 名字
geometry_msgs::PoseStamped> /mavros/setpoint_position/local
geometry_msgs::TwistStamped /mavros/setpoint_velocity/cmd_vel

訂閱

資訊名字 回調函數
/mavros/local_position/local OffboardControl::local_pos_cb

文章主要介紹了使用ROS/Gazebo仿真器作為飛機外部的仿真器

overview

  • ROS包含很多packages,這些包可以完成多種任務。他允許你去模組化無人機的飛行環境,這其中包括室内環境,室外環境,運作自己的飛控的算法。
  • Gazebo支援多種不同的旋翼模型,另外可以支援一些傳感器和其他行為。
玩轉四旋翼無人機(仿真)

如圖所示為ROS/Gazebo繼承SITL的内部結構示意。

precondition

OS requirements

- 相容 ros indigo

- ubuntu 14.04.2相容SITL

installation

  • ardupilot installation
git clone https://github.com/alexbuyval/ardupilot
git checkout RangeFinderSITL2
           
  • ros installation

按照ROS website to install ROS Indigo的教程來安裝ros indigo

- workspace creation

Follow these instructions to create your workspace.

  • install needed packages
  • Execute the following commands in your console to install pre-built ROS packages:

Execute the following commands in your console to clone all necessary ROS packages:

roscd
cd ../src #Navigate in your ROS user source files directory
git clone https://[email protected].org/alexbuyval/arducopter_sitl_ros.git
git clone https://github.com/PX4/mav_comm.git
git clone https://github.com/alexbuyval/rotors_simulator.git
git clone https://github.com/ethz-asl/glog_catkin.git
git clone https://github.com/catkin/catkin_simple.git
cd rotors_simulator
git checkout sonar_plugin
cd ../..
wstool init src
wstool set -t src mavros --git https://github.com/alexbuyval/mavros.git
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro indigo -y
           

Compile your catkin workspace. It may take some time.

cd .. #Navigate in your ROS workspace
catkin_make #Compile the files
           

設定建構工具的環境變量

為找到sim_vehicle.py,應該設定環境變量。在~/.bashrc中添加

export PATH=$PATH:$HOME/ardupilot/Tools/autotest
           

開啟ROS/Gazebo和仿真器

進入ardupilot目錄,執行

cd ~/ardupilot/ArduCopter
sim_vehicle.py -f arducopter_sitl_ros --console
           

如果一切執行正常的話,會彈出gazebo對話框,可以使用rqt node graph 檢視目前運作的節點,檢視目前使用的topics

控制階段例程

可以使用一個簡單的控制代碼,在一個标志上方盤旋如ar_track_alvar節點,檢測病計算視覺标志的位置,另外該節點結合來自與搖桿joystick的控制資訊使用PD控制器。是以可以使用joystick實作高度控制和看不見标志的時候手動控制。另外需要package um_pixhawk ,git 該package

運作該控制節點

然後arm 飛機,設定為alt-hold模式,使用joyst,在Saiteck ST290Pro joyst中按下鍵4設定AltHold模式,鍵2arm飛機,如果使用不同joystick那麼需要修改joystick設定檔案,那麼copy mavros/mavros_extras/launch/st290_joy.yaml 檔案,并修改為自己的joystick模型。