22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

发表于 2021-11-22 13:33:14 16503 浏览 25 回复

[控制算法] Prometheus 编队代码问题。

Prometheus 代码里面 的编队例子,sitl_swarm_uav1.launch 这个里面 swarm_estimator.cpp 默认只能用于mocap的定位方式,不能GPS是吗? 还有formation_flight 这个节点文件也没有。麻烦大佬回答一下

扫一扫浏览分享
回复

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-22 15:52:10
应该是我理解错了,这个mocap是外部输入的一种定位方式。跟我理解的不一样。编队飞行的时候,swarm_controller 节点会根据输入的队形信息发生期望点数据到飞控里面,来实现集中式控制。
回复 点赞

使用道具 举报

29

阿木币

0

精华

91 小时

在线时间

技术大V

Rank: 4

发表于 2021-11-22 16:06:55
你说做仿真还是实机
回复 点赞

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-22 17:10:41
BOSHEN97 发表于 2021-11-22 16:06
你说做仿真还是实机

做真机.......
回复 点赞

使用道具 举报

29

阿木币

0

精华

91 小时

在线时间

技术大V

Rank: 4

发表于 2021-11-23 09:39:29
做真机直接用真实的定位来源就行了,如果是GPS定位,直接飞控就有位置数据了,ROS这边就不需要传定位数据给飞控了,直接写你的控制代码就可以了
回复 点赞

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-23 10:23:37
BOSHEN97 发表于 2021-11-23 09:39
做真机直接用真实的定位来源就行了,如果是GPS定位,直接飞控就有位置数据了,ROS这边就不需要传定位数据给 ...

那Prometheus 这边报mocap Time out 就不用管他了。还有一个问题就是 在Primetheus里面他是怎么发送数据给QGC的。没看到这部分的逻辑。我现在默认就是用mavros 里面的gcs_url。
回复 点赞

使用道具 举报

29

阿木币

0

精华

91 小时

在线时间

技术大V

Rank: 4

发表于 2021-11-23 12:01:30
QGC是飞控地面站,是和飞控通信的,Prometheus里面的代码是运行在ROS当中的,ROS系统中和飞控进行通信则是通过mavros,Prometheus和飞控通信,和地面站之间没有啥数据交互
回复 点赞

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-23 13:27:12
BOSHEN97 发表于 2021-11-23 12:01
QGC是飞控地面站,是和飞控通信的,Prometheus里面的代码是运行在ROS当中的,ROS系统中和飞控进行通信则是 ...

因为看到仿真打开地面站有数据显示,才有这个问题。 那么我需要做的就是继续在Mavros里面回传数据到地面站,或者增加数传模块。感谢大佬回复
回复 点赞

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-23 15:21:13
BOSHEN97 发表于 2021-11-23 12:01
QGC是飞控地面站,是和飞控通信的,Prometheus里面的代码是运行在ROS当中的,ROS系统中和飞控进行通信则是 ...

大佬麻烦再问一下,formation_flight 这个节点的代码为什么没有
回复 点赞

使用道具 举报

22

阿木币

0

精华

35 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2021-11-23 17:43:36
修改了Prometheus里面的 sitl_swarm_1uav.launch 文件。机载计算机里面启动Mavros节点

  1.         <!-- 启动MAVROS -->
  2.         <!-- 不同机载电脑,注意修改fcu_url至正确的端口号及波特率 -->
  3.         <node pkg="mavros" type="mavros_node" name="mavros" output="screen">
  4.                 <!-- 不同机载电脑,注意修改fcu_url至正确的端口号及波特率 -->
  5.                 <param name="fcu_url" value="/dev/ttyTHS2:921600" />
  6.                 <param name="gcs_url" value="" />
  7.                 <param name="target_system_id" value="1" />
  8.                 <param name="target_component_id" value="1" />
  9.                 <rosparam command="load" file="$(find prometheus_experiment)/config/mavros_config/px4_pluginlists.yaml" />
  10.                 <rosparam command="load" file="$(find prometheus_experiment)/config/mavros_config/px4_config.yaml" />
  11.         </node>
复制代码


地面端启动launch文件如下
  1. <launch>
  2.         <!-- 无人机集群数量 -->
  3.         <arg name="swarm_num_uav" default="1"/>
  4.         <!-- 无人机ID -->
  5.         <arg name="uav1_id" default="1"/>
  6.         <!-- 无人机初始位置 -->
  7.         <arg name="uav1_init_x" default="0.0"/>
  8.     <arg name="uav1_init_y" default="0.0"/>
  9.         <!-- swarm_estimator 参数 -->
  10.         <arg name="input_source" default="2"/>
  11.         <!-- swarm_controller 参数 -->
  12.         <arg name="Takeoff_height" default="1.0"/>
  13.         <arg name="Disarm_height" default="0.2"/>
  14.         <arg name="Land_speed" default="0.2"/>
  15.         <!-- 地理围栏 -->
  16.         <arg name="x_min" default="-100.0"/>
  17.         <arg name="x_max" default="100.0"/>
  18.         <arg name="y_min" default="-100.0"/>
  19.         <arg name="y_max" default="100.0"/>
  20.         <arg name="z_min" default="-1.0"/>
  21.         <arg name="z_max" default="50.0"/>


  22.         <!-- run the swarm_estimator.cpp -->
  23.         <node pkg="prometheus_swarm_control" type="swarm_estimator" name="swarm_estimator_uav1" output="screen">
  24.                 <param name="input_source" value="$(arg input_source)" />
  25.                 <param name="uav_id" value="$(arg uav1_id)"/>
  26.         </node>

  27.         <!-- 启动swarm_controller -->
  28.         <node pkg="prometheus_swarm_control" type="swarm_controller" name="swarm_controller_uav1" output="screen">
  29.                 <param name="swarm_num_uav" value="$(arg swarm_num_uav)"/>
  30.                 <param name="uav_id" value="$(arg uav1_id)"/>
  31.                 <param name="Takeoff_height" value="$(arg Takeoff_height)"/>
  32.                 <param name="Disarm_height" value="$(arg Disarm_height)"/>
  33.                 <param name="Land_speed" value="$(arg Land_speed)"/>
  34.                 <param name="geo_fence/x_min" value="$(arg x_min)"/>
  35.                 <param name="geo_fence/x_max" value="$(arg x_max)"/>
  36.                 <param name="geo_fence/y_min" value="$(arg y_min)"/>
  37.                 <param name="geo_fence/y_max" value="$(arg y_max)"/>
  38.                 <param name="geo_fence/z_min" value="$(arg z_min)"/>
  39.                 <param name="geo_fence/z_max" value="$(arg z_max)"/>
  40.         </node>

  41.         <!-- 启动地面站 -->
  42.         <node pkg="prometheus_swarm_control" type="swarm_ground_station" name="swarm_ground_station" output="screen" launch-prefix="gnome-terminal --tab --">       
  43.                 <param name="swarm_num_uav" value="$(arg swarm_num_uav)"/>
  44.         </node>

  45.         <node pkg="prometheus_swarm_control" type="swarm_terminal_control" name="swarm_terminal_control" output="screen" launch-prefix="gnome-terminal --">
  46.                 <param name="uav_id" value="$(arg uav1_id)"/>
  47.         </node>

  48. </launch>

复制代码


打开rqt_grapth 显示 订阅mavros节点的 、mavros/imu/data ,以及 控制发布的/mavros/setpoint_raw/local 并没有订阅以及发布成功。
看了半天不知道是因为什么。

仿真 rqt_grapth 图
Screenshot from 2021-11-23 17-36-00.png

修改后真机图
Screenshot from 2021-11-23 17-33-46.png

代码都看明白了,就是不知道为什么订阅消息不成功。
请大佬指点
回复 点赞

使用道具 举报

下一页 »
123下一页
返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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