(七)Crazyflie支持Matlab/Simulink控制
一、动捕软件VRPN配置
以动捕软件版本XINGYING 4.2.0.5495为例,其他版本同理。打开动捕软件,连接上镜头。单击菜单栏下的视图->数据广播。在数据广播中的VRPN流下,将单位下拉选择米,类型勾选刚体并启用VRPN。
.png)
图 1-打开数据广播视图
.png)
图 2-动捕中vrpn配置
单击菜单栏下的视图->设备打开设备视图。先点击停止播放按键,在高级框中将动捕帧率修改为120。
.png)
图 3-打开设备视图
.png)
图 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一定要在当前文件夹。
.png)
图 5-打开flightmaster2的matlab套件
2. 在matlab终端上运行以下代码,选择编译器和编译语言。
mex -setup C++
.png)
图 6-选择编译语言
3. 运行以下命令对自定义消息进行编译。
ros2genmsg('custom_msgs');
.png)
图 7-编译自定义消息类型
4. 双击flightmaster2.slx进入simulink模型。
.png)
图 8-打开flightmaster2的simulink程序
5. 点击上方的仿真,在单击ROS Network。将Domain ID修改为与ubuntu一致,将RMW Implementation修改为rmw_fastrtps_cpp。
.png)
图 9-配置ROS2网络
三、基础飞行操作演示
(一) 基础控制
在基础控制轮盘中实现了对无人机的基础控制,包括解锁、起飞、悬停、降落和急停服务,可对单个或多个无人机操作。
1. 将三架crazyflie机头朝向x轴正方向,放置在场地中,在动捕创建刚体nokov1、nokov2和nokov3,骨骼朝向为x轴,如下图所示。
.png)
图 10-建立刚体
2. 双击flightmaster2.slx打开simulink模型。
.png)
图 11-双击该文件打开模型
.png)
图 12-simulink模型页面
3. 打开ubuntu,在flightmaster2中的flightmasters.yaml启用三架crazyflie。
.png)
图 13-启动三架crazyflie
4. 开启一个终端,使用以下命令打开flightmaster2图形控制界面。
cd ~/FlightMaster2/
python fmclient.py
.png)
图 14-运行flightmaster2图形化界面
5. 在图形化界面上选择RealMode并勾选RViz,再点击启动FlightSwarm。此时会运行flightmaster2的服务节点,rviz也会启动。
.png)
图 15-flightmaster2图形化界面
6. 在matlab的simulink界面上,将集群demo轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。
.png)
图 16-将轮盘拨至No
.png)
图 17-运行simulink
先将基础服务轮盘拨至Takeoff,此时三架无人机会起飞至1米,再将轮盘拨至Hold,无人机会在当前位置保持悬停,再将轮盘拨至Land,三架无人机降落,最后将轮盘拨至No。
.png)
图 18-轮盘拨至takeoff
.png)
图 19-无人机起飞
.png)
图 20-rviz显示
(二) crazyflie单机绕方
1. 一架crazyflie放入动捕场地中,机头朝向x轴,在动捕软件中建立刚体,名称为vehicle3,骨骼朝向x轴。
.png)
图 21-创建刚体
2. 打开ubuntu,在flightmasters.yaml启用一架crazyflie,在flightmaster2图形控制界面上启动FlightSwarm。
.png)
图 22-启用一架crazyflie
.png)
图 23-启动FlightSwarm
3. 在matlab的simulink界面上,将demo控制轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。
.png)
图 24-将轮盘拨至No
.png)
图 25-运行simulink
4. 在demo控制轮盘下方,将VEHICLE3开关拨至on启用设备,此时启用设备的灯会变绿。
.png)
图 26-启用设备
5. 将demo控制轮盘拨至crazyflie。此时vehicle3会先起飞然后绕方形。
.png)
图 27-轮盘拨至crazyflie
.png)
图 28-crazyflie绕方形
.png)
图 29-rviz显示