William 该用户已被删除
发表于 2021-3-18 09:37:09 9671 浏览 6 回复

Simulink控制Gazebo无人机

提示: 作者被禁止或删除 内容自动屏蔽

扫一扫浏览分享
回复

使用道具 举报

39

阿木币

0

精华

91 小时

在线时间

技术大V

Rank: 4

发表于 2021-3-19 09:49:23
Gazebo中的无人机是物理仿真形式的,要想控制Gazebo中的无人机是需要通过一些控制插件去控制的(PX4的无人机仿真已经提供相应的控制插件)。这些插件会提供控制接口,一般情况下是以ROS 话题的形式提供出来,例如PX4的无人机可以通过mavros提供的setpoint_raw话题来控制无人机进行飞行。
根据你提供的情况,你使用了setpoint_velocity/cmd_vel这个话题来控制,无人机不动的情况太多了,但你可以分析一下这几个部分是否存在问题:
1.控制话题是否成功传入到mavros节点
2.mavros与PX4仿真无人机是否正常连接
3.无人机是否处于offboard模式
4.仿真无人机是否可以正常飞行
回复 点赞 2

使用道具 举报

144

阿木币

0

精华

143 小时

在线时间

技术大V

Rank: 4

发表于 2021-3-18 10:31:53
我也想学simulink和gazebo的联动 我觉得你这个逻辑上有个问题
回复 点赞

使用道具 举报

144

阿木币

0

精华

143 小时

在线时间

技术大V

Rank: 4

发表于 2021-3-18 10:33:47
ROS中的乌龟,乌龟是具有运动控制原理的,是可以接收simulink的指令。但在mavros,是由gazebo通过mavros给PX4飞控发指令。你应该用simulink模拟一个PX4飞控,然后通过gazebo给simulink发位置和速度指令吧。
回复 点赞

使用道具 举报

144

阿木币

0

精华

143 小时

在线时间

技术大V

Rank: 4

发表于 2021-3-18 10:35:24
大神啊 30个阿木币悬赏
回复 点赞

使用道具 举报

149

阿木币

1

精华

447 小时

在线时间

技术大V

Rank: 4

发表于 2021-3-19 12:10:29
1、你的乌龟之所以能够动起来,是因为即便不用matlab simulink,在ros中给乌龟发布速度话题他就可以动起来,而你的matlab simulink只是起到了给某个话题发布指令的作用。
2、下来说说为什么飞机不能动,飞机的mavros控制稍微复杂一点,不是说你发个期望位置,期望速度飞机就开始飞了,飞机有很多状态,首先飞机要起飞起来,想要外部控制飞机需要进入飞机的offboard飞行模式,所以说你飞不起来或者不东,即便是只发布速度ros话题飞机也不会动,所以你在matlab simulink也自然没什么反应。
3、再下来说说给你的建议:还是说到重点,matlab simulink只是起到了发布某个话题,你需要考虑话题的msg消息类型。而ros中还应该有一套利用mavros控制无人机的系统,而Prometheus代码就是做这个的,你按照Prometheus的仿真流程走,如何要与matlab simulink结合使用,就看Prometheus里面发布飞机运动的话题及指令和msg,这样才能跑通。
回复 点赞

使用道具 举报

606

阿木币

1

精华

1500 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2021-3-19 16:56:27
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表