|
发表于 2021-3-18 09:37:09
9671 浏览 6 回复
Simulink控制Gazebo无人机
提示: 作者被禁止或删除 内容自动屏蔽
 扫一扫浏览分享
|
|
|
|
|
|
|
发表于 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.仿真无人机是否可以正常飞行 |
|
|
|
|
|
|
|
发表于 2021-3-18 10:31:53
我也想学simulink和gazebo的联动 我觉得你这个逻辑上有个问题 |
|
|
|
|
|
|
|
发表于 2021-3-18 10:33:47
ROS中的乌龟,乌龟是具有运动控制原理的,是可以接收simulink的指令。但在mavros,是由gazebo通过mavros给PX4飞控发指令。你应该用simulink模拟一个PX4飞控,然后通过gazebo给simulink发位置和速度指令吧。 |
|
|
|
|
|
|
|
发表于 2021-3-18 10:35:24
|
|
|
|
|
|
|
发表于 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,这样才能跑通。 |
|
|
|
|
|
|
|