MPC多旋翼控制 - mav_control_rw项目

MPC多旋翼控制 - mav_control_rw项目

mav_control_rw项目介绍

毕业论文需要研究MPC无人机控制,找到一个比较不错的入手项目,ETHZ ASL的mav_control_rw项目。利用mpc控制实现了旋翼式无人机的轨迹追踪算法。

相关论文:

[1] Model Predictive Control for Trajectory Tracking of Unmanned Aerial Vehicles Using Robot Operating System. Mina Kamel, Thomas Stastny, Kostas Alexis and Roland Siegwart. Robot Operating System (ROS) The Complete Reference Volume 2. Springer 2017 (to appear)
[2] Linear vs Nonlinear MPC for Trajectory Tracking Applied to Rotary Wing Micro Aerial Vehicles. Mina Kamel, Michael Burri and Roland Siegwart. arXiv:1611.09240

主要看了第一篇,主要内容是讲旋翼式以及固定翼的线性以及非线性模型的mpc控制器,感觉讲的非常详细了。

项目安装

安装ROS,项目使用的是indigo,但我用的是Noetic,后面使用无区别。不过为了防止意外,此处还是用indigo。不过如果要用Noetic的话需要把安装包中的python后面加个3,如python3-wstool。

  $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
  $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
  $ sudo apt-get update
  $ sudo apt-get install ros-indigo-desktop-full ros-indigo-joy ros-indigo-octomap-ros python-wstool python-catkin-tools
  $ sudo rosdep init
  $ rosdep update
  $ source /opt/ros/indigo/setup.bash

初始化ROS工作空间(如果没有工作空间的话)

  $ mkdir -p ~/catkin_ws/src
  $ cd ~/catkin_ws
  $ catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
  $ catkin init  # initialize your catkin workspace

获取项目源码,如果在之前的步骤建了catkin_ws,需要在~/catkin_ws/src中进行git clone。

 $ sudo apt-get install liblapacke-dev
 $ git clone https://github.com/catkin/catkin_simple.git
 $ git clone https://github.com/ethz-asl/rotors_simulator.git
 $ git clone https://github.com/ethz-asl/mav_comm.git
 $ git clone https://github.com/ethz-asl/eigen_catkin.git

 $ git clone https://github.com/ethz-asl/mav_control_rw.git

build工作空间

  $ catkin build

最后进行测试,在两个不同的命令行窗口中输入以下命令

$ roslaunch rotors_gazebo mav.launch mav_name:=firefly
$ roslaunch mav_linear_mpc mav_linear_mpc_sim.launch mav_name:=firefly

成果

现在可以用rqt发布命令试试效果了.命令行输入rqt,然后打开Plugins菜单中visualization里的Message Publisher,发布的话题名称为/firefly/command/pose即可实现定点控制拉,接下来研究一下trajectory的格式以备后面使用。

alt
在这里插入图片描述

`enum MAV_CMD` 是在 MAVLink 协议中定义的一系列命令枚举,MAVLink 是无人驾驶飞机系统(UAVs)和其他自主飞行平台之间通用的串行通讯协议。MAVLink 允许各种硬件设备(例如地面站、传感器、执行器等)之间通过统一的通讯格式进行数据交换。`MAV_CMD` 枚举提供了无人机系统可以接收并响应的不同类型的指令集合,用于控制飞行器的行为。下面简要介绍几个例子: ### 一些典型的 MAV_CMD 示例: #### 1. `MAV_CMD_NAV_TAKEOFF` - **描述**: 该命令用于启动无人机从地面起飞到指定的高度。 - **应用场景**: 地面站或预设程序触发起飞过程。 #### 2. `MAV_CMD_NAV陆点` - **描述**: 用于引导无人机沿预先设定的路线飞行,每个 `WP`(Waypoint)代表一个特定的位置目标。 - **应用场景**: 自动化航线规划和导航任务。 #### 3. `MAV_CMD_PREFLIGHT_CALIBRATION` - **描述**: 用于初始化和校准无人机的各种传感器,包括姿态传感器、GPS、磁力计等。 - **应用场景**: 飞前检查,确保飞行安全性和精度。 #### 4. `MAV_CMD_MISSION_START` - **描述**: 开始执行预设的飞行任务或航线。 - **应用场景**: 启动任务执行阶段,通常在完成校准或准备就绪后使用。 #### 5. `MAV_CMD_QUICK返航` - **描述**: 当遇到紧急情况或需要快速返回到基地的情况时使用的命令。 - **应用场景**: 应对电池电量低、导航故障或其他安全警告的应急措施。 ### 使用场景: 在无人机控制系统中,地面站软件或自主飞行算法会根据飞行任务需求生成一系列基于 `MAV_CMD` 的指令序列。例如,在执行一次空中拍摄任务时,系统可能会首先通过 `MAV_CMD_PREFLIGHT_CALIBRATION` 进行动作传感器校准,随后使用 `MAV_CMD_NAV陆点` 指令规划一条航线,再通过 `MAV_CMD_MISSION_START` 开始执行这条航线。同时,地面站还可以实时监控飞行状态,并在必要时发出 `MAV_CMD_QUICK返航` 等指令应对突发状况。 ### 相关问题: 1. **如何通过 MAVLink 发送和接收 MAV_CMD 命令**? 2. **MAVLink 协议如何保证命令传输的安全性和可靠性**? 3. **在实际应用中,如何利用 MAV_CMD 实现复杂而精准的飞行任务**? 这些问题有助于深入理解和应用 MAVLink 协议中的 `MAV_CMD` 功能,对于设计、实施和优化 UAS 控制系统至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值