Skip to main content

(七)Crazyflie支持Matlab/Simulink控制

一、动捕软件VRPN配置

以动捕软件版本XINGYING 4.2.0.5495为例,其他版本同理。打开动捕软件,连接上镜头。单击菜单栏下的视图->数据广播。在数据广播中的VRPN流下,将单位下拉选择米,类型勾选刚体并启用VRPN。

图 1-打开数据广播视图

图 1-打开数据广播视图

图 2-动捕中vrpn配置

图 2-动捕中vrpn配置

单击菜单栏下的视图->设备打开设备视图。先点击停止播放按键,在高级框中将动捕帧率修改为120。

图 3-打开设备视图

图 3-打开设备视图

图 4-修改动捕帧率

图 4-修改动捕帧率

二、MATLAB/Simulink平台配置

要求ROS 版本:galactic,Ubuntu 版本:20.04。crazyflie固件版本2024.10以上,若版本过低自行更新版本(cfclient使用)。在windows主机上,Matlab版本建议2020a以上,本实验使用2022a;自行安装python、cmake和Microsoft Visual C++,注意要与matlab的版本对应。

(一) ubuntu环境配置

开启终端,使用以下命令将环境配置写入.bashrc中。ROS_DOMAIN_ID的取值范围为0~255。

echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc
echo "export ROS_DOMAIN_ID=26" >> ~/.bashrc

(二) Matlab/Simulink环境配置

1. 先将flightmaster2的matlab套件解压,使用matlab打开套件,flightmaster2.slx一定要在当前文件夹。

图 5-打开flightmaster2的matlab套件

图 5-打开flightmaster2的matlab套件

2. 在matlab终端上运行以下代码,选择编译器和编译语言。

mex -setup C++
图 6-选择编译语言

图 6-选择编译语言

3. 运行以下命令对自定义消息进行编译。

ros2genmsg('custom_msgs');
图 7-编译自定义消息类型

图 7-编译自定义消息类型

4. 双击flightmaster2.slx进入simulink模型。

图 8-打开flightmaster2的simulink程序

图 8-打开flightmaster2的simulink程序

5. 点击上方的仿真,在单击ROS Network。将Domain ID修改为与ubuntu一致,将RMW Implementation修改为rmw_fastrtps_cpp。

图 9-配置ROS2网络

图 9-配置ROS2网络

三、基础飞行操作演示

(一) 基础控制

在基础控制轮盘中实现了对无人机的基础控制,包括解锁、起飞、悬停、降落和急停服务,可对单个或多个无人机操作。

1. 将三架crazyflie机头朝向x轴正方向,放置在场地中,在动捕创建刚体nokov1、nokov2和nokov3,骨骼朝向为x轴,如下图所示。

图 10-建立刚体

图 10-建立刚体

2. 双击flightmaster2.slx打开simulink模型。

图 11-双击该文件打开模型

图 11-双击该文件打开模型

图 12-simulink模型页面

图 12-simulink模型页面

3. 打开ubuntu,在flightmaster2中的flightmasters.yaml启用三架crazyflie。

图 13-启动三架crazyflie

图 13-启动三架crazyflie

4. 开启一个终端,使用以下命令打开flightmaster2图形控制界面。

cd ~/FlightMaster2/

python fmclient.py

图 14-运行flightmaster2图形化界面

图 14-运行flightmaster2图形化界面

5. 在图形化界面上选择RealMode并勾选RViz,再点击启动FlightSwarm。此时会运行flightmaster2的服务节点,rviz也会启动。

图 15-flightmaster2图形化界面

图 15-flightmaster2图形化界面

6. 在matlab的simulink界面上,将集群demo轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。

图 16-将轮盘拨至No

图 16-将轮盘拨至No

图 17-运行simulink

图 17-运行simulink

先将基础服务轮盘拨至Takeoff,此时三架无人机会起飞至1米,再将轮盘拨至Hold,无人机会在当前位置保持悬停,再将轮盘拨至Land,三架无人机降落,最后将轮盘拨至No。

图 18-轮盘拨至takeoff

图 18-轮盘拨至takeoff

图 19-无人机起飞

图 19-无人机起飞

图 20-rviz显示

图 20-rviz显示

(二) crazyflie单机绕方

1. 一架crazyflie放入动捕场地中,机头朝向x轴,在动捕软件中建立刚体,名称为vehicle3,骨骼朝向x轴。

图 21-创建刚体

图 21-创建刚体

2. 打开ubuntu,在flightmasters.yaml启用一架crazyflie,在flightmaster2图形控制界面上启动FlightSwarm。

图 22-启用一架crazyflie

图 22-启用一架crazyflie

图 23-启动FlightSwarm

图 23-启动FlightSwarm

3. 在matlab的simulink界面上,将demo控制轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。

图 24-将轮盘拨至No

图 24-将轮盘拨至No

图 25-运行simulink

图 25-运行simulink

4. 在demo控制轮盘下方,将VEHICLE3开关拨至on启用设备,此时启用设备的灯会变绿。

图 26-启用设备

图 26-启用设备

5. 将demo控制轮盘拨至crazyflie。此时vehicle3会先起飞然后绕方形。

图 27-轮盘拨至crazyflie

图 27-轮盘拨至crazyflie

图 28-crazyflie绕方形

图 28-crazyflie绕方形

图 29-rviz显示

图 29-rviz显示