Gazebo多无人机仿真启动流程

最近一直跟着古月居大神Judez的教程进行仿真,自从跟着他的教程毫无差错搞出matlab仿真后,就觉得他写的教程都很靠谱,所以死心塌地的尝试,当然,还是要补充很多基础知识的。
虽然昨天成功把无人机显示在gazebo中了,但在运行roslaunch rotors_gazebo multi_mav_formation.launch总是毫无反应,运行rqt_graph展现出来的节点图只有launch文件中定义的/UAV/motion_controller、/UAV/lee_position_controller_nodes、/UAV/command/motor_speed、/UAV/joint_state_publisher、/UAV/joint_states这些节点显示出来了。
尝试了这个教程后无人机飞起来了,
改动启动仿真语句为:

roslaunch rotors_gazebo multi_mav_formation.launch mav_name:=firefly world_name:=basic 

节点也丰富起来了,但依旧控制失败,所以明天可以好好学学这些语句背后的含义,以及好好看看是不是教程中rotors_formation_son.py的问题或者是multi_mav_formation.launch文件定义的问题。毕竟无人机没有达到按照matlab仿真数据移动

在这里记录一下仿真顺序,因为windows和ubuntu经常来回切换,所以很有必要进行记录。
1、gazebo中无人机的初始位置记录在/home/zy/ws/src/rotors_simulator/rotors_gazebo/launch/multi/multi_mav_formation.launch文件中,x、y、z,三个值设定为default可以修改,value意味着不能修改,我在调试的时候,可能会需要初始位置有变化,所以可以在这里修改。
2、为了防止自己搞错,下载中有一个original-consensus-formation-control-master文件,这是原始文件,matlab运行后show_des_posdata后的text1.txt存在于这个文件夹中,记得把这个粘到文件夹data中,不然可能是自己修改后的consensus-formation-control-master文件。

1、cd 到 ws ,在终端打开,catkin build
2、cd到rotors_simulator,在终端打开,

roslaunch rotors_gazebo multi_mav_formation.launch mav_name:=iris world_name:=basic 

细节更新记录:
1、文中提到的位置式控制器,即rotors_formation_son.py就位于该项目的“/home/zy/ws/src/rotors_simulator/rotors_teleop/src”文件下。
2、要想让ros能读取matlab最终跑出来的数据,这个应用程序里的以下语句:

dataMat,numberOfLines = file2matrix("/home/zy/data/***.txt")

中存储的.txt文件,来自于matlab中跑出来的数据。但是rotors_formation_son.py需要读取特定行列数的数据,我开始不懂很多语句啥意思,费了很长时间。
我在Matlab中写了一个Show_vehicle_data.m的程序,然后将des_pos.data数据存为text1.txt。text1.txt文件存储的是N4列的格式,因为是6架无人机,所以就是64这样的格式一直重复至N。第一列的1-6,估计是标志,告诉rotors_formation_control 读数据的起始位置。
Show_vehicle_data.m程序如下:

ad = des_pos.data;
b = [1 2 3 4 5 6];

% x1 = a(1,1,1);
% y1 = a(2,1,1);
% z1 = a(3,1,1);
% for i=2:1361
%     x1(1:i) = [x1 a(1,1,i)];
%     y1(1:i) = [y1 a(2,1,i)];
%     z1(1:i) = [z1 a(3,1,i)]; 
% end
% figure
% plot3(x1,y1,z1);
% hold on

x = ad(1,:,1);
y = ad(2,:,1);
z = ad(3,:,1);
for i=2:1273
    x(1:i*6) = [x ad(1,:,i)];
    y(1:i*6) = [y ad(2,:,i)];
    z(1:i*6) = [z ad(3,:,i)]; 
end

figure
for j = 1:6
    plot3(x(j:6:6*1273),y(j:6:6*1273),z(j:6:6*1273));
    hold on
end


for i = 1:1273
    c(:, :, i) = [b; ad(:, :, i)];
end
d = c(:, :, 1)';
for i = 2:1273
    d(1:i*6,:) = [d;c(:, :, i)'];
end

fid=fopen(['text1.txt'],'w');%写入文件路径
[r,w]=size(d);            % 得到矩阵的行数和列数
 for i=1:r
     fprintf(fid,'%d ',d(i,1));
     for j=2:w
       fprintf(fid,'%f ',d(i,j));
     end
  fprintf(fid,'\n');
 end
fclose(fid);

text1.txt文件格式如下:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值