0%

无人机仿真

无人机仿真的几种方法

在ros环境下无人机的仿真方式有以下几种

本教程环境

  • 系统:ubuntu16.04
  • ROS版本:kinetic

hector_quadrotor

hector_quadrotor wiki

安装

1. 新建工作空间并初始化

1
2
3
mkdir -p hector_quadrotor_catkin/src
cd hector_quadrotor_catkin/src
catkin_init_workspace

2. 克隆源代码

1
git clone https://github.com/tu-darmstadt-ros-pkg/hector_quadrotor.git

3. 初始化wstool,并更新所需库

1
2
3
wstool init
wstool merge tutorials.rosinstall
wstool update

4. 编译

1
2
cd ~/hector_quadrotor_catkin/
catkin build

5. 环境变量

1
source ./devel/setup.bash

也可以用下面的方式:

1
2
echo "source ~/hector_quadrotor_catkin/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

运行

编译成功后可以运行demo试一下,hector_quadrotor一共有两个demo,indoor和outdoor.

indoor

1
roslaunch hector_quadrotor_demo indoor_slam_gazebo.launch

outdoor

1
roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch

键盘操控

使用teleop_twist_keyboard package

1
2
sudo apt-get install ros-kinetic-teleop-twist-keyboard
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

ps:需要先按t让飞机先飞起来才能控制

rotors_simulator

安装

1. 新建工作空间并初始化

1
2
3
mkdir -p rotors_ws/src
cd rotors_ws/src
catkin_init_workspace

2. 克隆源代码

1
git clone https://github.com/ethz-asl/rotors_simulator.git

3. 初始化wstool,并更新所需库

1
2
3
4
wstool init
wget https://raw.githubusercontent.com/ethz-asl/rotors_simulator/master/rotors_hil.rosinstall
wstool merge rotors_hil.rosinstall
wstool update

4. 编译

1
2
cd ~/rotors_ws/
catkin_make

5. 环境变量

1
source ./devel/setup.bash

也可以用下面的方式:

1
2
echo "source ~/rotors_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

运行

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

功能开发

更多功能的开发请看无人机仿真:rotors_simulator的使用

XTDrone

其实这是基于PX4和ROS的无人机仿真平台,不过有很多已经开发好的项目

一、PX4的安装

安装使用PX4可以直接看官方文档

也可以照着XTDrone的步骤(推荐)

1. 安装依赖

1
2
3
4
5
6
7
sudo apt install -y ninja-build exiftool python-argparse python-empy python-toml python-numpy python-yaml python-dev python-pip ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion
pip3 install packaging numpy empy toml pyyaml jinja2

//gazebo
sudo apt install ros-kinetic-gazebo9-*

2. 安装 mavros 以及相关的 geographiclib dataset

mavros 是一个飞机固件与ros通信的包

1
2
3
4
5
sudo apt install ros-kinetic-mavros ros-kinetic-mavros-extras
//如果出现443拒绝连接的情况,可能是因为域名污染,在/etc/hosts中加入raw.githubusercontent.com指定ip就行
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh

3. 下载编译px4 Firmware

创建工作空间(已经有工作空间的跳过)

1
2
3
4
5
mkdir -p ~/px4_ws/src
cd ~/px4_ws/src/
catkin_init_workspace
cd ..
catkin_make

下载编译px4

1
2
3
4
5
6
7
8
9
//一般将固件放在主目录下而不是ros的工作空间中
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
//可以根据需求改变版本号v1.x.x
git checkout v1.11.2
git submodule update --init --recursive
//开始编译
make px4_sitl_default gazebo

编译报错

编译报错时,可能缺少了必要的依赖,可以在编译前:

1
2
3
4
cd ~/PX4_Firmware
bash
//只是进行ros下开发仿真的话,可以把ubuntu.sh里的INSTALL_NUTTX改为’false’,或是加上参数--no-nuttx
bash ./Tools/setup/ubuntu.sh --no-nuttx

注意:ubuntu.sh可能安装失败,请务必重新运行ubuntu.sh脚本,直至成功

4. 添加环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
//添加工作空间source
echo "source ~/px4_ws/devel/setup.bash" >> ~/.bashrc

//添加px4路径
echo "source ~/PX4_Firmware/Tools/setup_gazebo.bash\
~/PX4_Firmware/\
~/PX4_Firmware/build/px4_sitl_default"\
>> ~/.bashrc
echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4_Firmware" >> ~/.bashrc
echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo" >> ~/.bashrc

//source一下
source ~/.bashrc

5. 运行

1
2
3
cd ~/PX4_Firmware
//此命令同时启动了mavros
roslaunch px4 mavros_posix_sitl.launch

二、安装无人机的地面站控制软件QGC

QGroundControl 是一个基于PX4自动驾驶仪配置和飞行的应用程序

官方安装指导教程

1. 准备工作

1
2
3
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y

2. 安装QGC

1) 下载

前往QCG发布网站下载合适的版本的QGroundControl.AppImage

注意: ubuntu16.04只能使用4.0以前的版本,4.0(含)以后的版本至少需要18.04,官方安装指导教程中已经说明

2) 安装

1
2
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage //或者双击就可以打开QGC

3) 使用

roslaunch px4 mavros_posix_sitl.launch之后打开QGC会显示飞机已连接,在里面中添加飞行任务,然后上传,再滑动就可以启动飞行任务。

———————-PX4与ROS基础配置完成———————–

各部分间的关系如下图所示:

PX4架构

三、XTDrone部分

XTDrone使用文档

ref