玩转四旋翼无人机(仿真)

无人机的仿真方法,在ros环境下,有三种仿真方式,一种是mavros配合sitl的仿真,其次是hector_quadrotor ros package,还有一种就是就近ETH新出的一个gazebo环境仿真包。

三者对比

  • sitl的设置比较麻烦,而且飞机的控制使用指令来的。
  • hector_quadrotor开发的比较完善,可以使用xbox作为飞机的遥控器
  • rotorS是新出的包,里边给出了几种商用的飞机模型,控制指令是ros meassage。

hector_quadrotor

install

这个包既可以直接apt-get

sudo apt-get install ros-hydro-hector-quadrotor-demo

执行该指令会把该包的依赖包一起安装好,另外也可以源安装

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

运行,启动节点

roslaunch hector_quadrotor_demo indoor_slam_gazebo.launch

使用xbox控制飞机

roslaunch hector_quadrotor_teleop xbox_controller.launch

rotorS

install

首先安装依赖包

sudo apt-get install ros-indigo-desktop-full ros-indigo-joy ros-indigo-octomap-ros python-wstool python-catkin-tools

下载源文件

cd ~/catkin_ws/src
git clone git@github.com:ethz-asl/rotors_simulator.git
git clone git@github.com:ethz-asl/mav_comm.git

然后编译即可

catkin_make

运行节点

roslaunch rotors_gazebo mav_hovering_example.launch mav_name:=firefly world_name:=basic

SITL

这里介绍mavros配合sitl的仿真,另外介绍了如何使用mavros,给出了一些例程,并根据起launch文件,找到了例程中的代码的写法。
wiki in ros

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

玩转四旋翼无人机(仿真)_第1张图片

Tutorial

ROS Getting Started Tutorial
在教程中给出了连接一个USB camera, pixhawk,并确保基本的安装能够工作。
- 安装stable ROS和ubuntu设置
- 连接USB,测试连接状态
- MAVROS也就是ROS——PX4 mavlink bridge在GPU和飞控之间传输数据,我们需要手动开启mavlink 数据流

nsh> sh /etc/init.d/rc.usb
  • launch the file test_rig.launch, tplease read the detail content.
    (launch之前需要修改udp的地址吧)
roslaunch test_rig.launch

这时会看到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支持多种不同的旋翼模型,另外可以支持一些传感器和其他行为。

玩转四旋翼无人机(仿真)_第2张图片
如图所示为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:
sudo apt-get install ros-indigo-octomap-msgs

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://alexbuyval@bitbucket.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

git clone https://[email protected]/alexbuyval/um_pixhawk.git

运行该控制节点

roslaunch um_pixhawk hovermarker.launch

然后arm 飞机,设置为alt-hold模式,使用joyst,在Saiteck ST290Pro joyst中按下键4设置AltHold模式,键2arm飞机,如果使用不同joystick那么需要修改joystick设置文件,那么copy mavros/mavros_extras/launch/st290_joy.yaml 文件,并修改为自己的joystick模型。

你可能感兴趣的:(UAV,ROS)