無人機的仿真方法,在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模型。