天天看点

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

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