无人机仿真的几种方法
在ros环境下无人机的仿真方式有以下几种
本教程环境
- 系统:ubuntu16.04
- ROS版本:kinetic
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
|
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
让飞机先飞起来才能控制
安装
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
|
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的使用
其实这是基于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架构](https://i.loli.net/2021/01/19/puTiaGwZLjW5QqH.png)
三、XTDrone部分
见XTDrone使用文档
ref