|
发表于 2021-11-22 13:33:14
36192 浏览 25 回复
[控制算法]
Prometheus 编队代码问题。
Prometheus 代码里面 的编队例子,sitl_swarm_uav1.launch 这个里面 swarm_estimator.cpp 默认只能用于mocap的定位方式,不能GPS是吗? 还有formation_flight 这个节点文件也没有。麻烦大佬回答一下 |
扫一扫浏览分享
|
|
|
|
|
|
|
楼主|
发表于 2021-11-22 15:52:10
应该是我理解错了,这个mocap是外部输入的一种定位方式。跟我理解的不一样。编队飞行的时候,swarm_controller 节点会根据输入的队形信息发生期望点数据到飞控里面,来实现集中式控制。 |
|
|
|
|
|
|
|
发表于 2021-11-22 16:06:55
|
|
|
|
|
|
|
楼主|
发表于 2021-11-22 17:10:41
|
|
|
|
|
|
|
发表于 2021-11-23 09:39:29
做真机直接用真实的定位来源就行了,如果是GPS定位,直接飞控就有位置数据了,ROS这边就不需要传定位数据给飞控了,直接写你的控制代码就可以了 |
|
|
|
|
|
|
|
楼主|
发表于 2021-11-23 10:23:37
那Prometheus 这边报mocap Time out 就不用管他了。还有一个问题就是 在Primetheus里面他是怎么发送数据给QGC的。没看到这部分的逻辑。我现在默认就是用mavros 里面的gcs_url。 |
|
|
|
|
|
|
|
发表于 2021-11-23 12:01:30
QGC是飞控地面站,是和飞控通信的,Prometheus里面的代码是运行在ROS当中的,ROS系统中和飞控进行通信则是通过mavros,Prometheus和飞控通信,和地面站之间没有啥数据交互 |
|
|
|
|
|
|
|
楼主|
发表于 2021-11-23 13:27:12
因为看到仿真打开地面站有数据显示,才有这个问题。 那么我需要做的就是继续在Mavros里面回传数据到地面站,或者增加数传模块。感谢大佬回复 |
|
|
|
|
|
|
|
楼主|
发表于 2021-11-23 15:21:13
大佬麻烦再问一下,formation_flight 这个节点的代码为什么没有 |
|
|
|
|
|
|
|
楼主|
发表于 2021-11-23 17:43:36
修改了Prometheus里面的 sitl_swarm_1uav.launch 文件。机载计算机里面启动Mavros节点
- <!-- 启动MAVROS -->
- <!-- 不同机载电脑,注意修改fcu_url至正确的端口号及波特率 -->
- <node pkg="mavros" type="mavros_node" name="mavros" output="screen">
- <!-- 不同机载电脑,注意修改fcu_url至正确的端口号及波特率 -->
- <param name="fcu_url" value="/dev/ttyTHS2:921600" />
- <param name="gcs_url" value="" />
- <param name="target_system_id" value="1" />
- <param name="target_component_id" value="1" />
- <rosparam command="load" file="$(find prometheus_experiment)/config/mavros_config/px4_pluginlists.yaml" />
- <rosparam command="load" file="$(find prometheus_experiment)/config/mavros_config/px4_config.yaml" />
- </node>
复制代码
地面端启动launch文件如下
- <launch>
- <!-- 无人机集群数量 -->
- <arg name="swarm_num_uav" default="1"/>
- <!-- 无人机ID -->
- <arg name="uav1_id" default="1"/>
- <!-- 无人机初始位置 -->
- <arg name="uav1_init_x" default="0.0"/>
- <arg name="uav1_init_y" default="0.0"/>
- <!-- swarm_estimator 参数 -->
- <arg name="input_source" default="2"/>
- <!-- swarm_controller 参数 -->
- <arg name="Takeoff_height" default="1.0"/>
- <arg name="Disarm_height" default="0.2"/>
- <arg name="Land_speed" default="0.2"/>
- <!-- 地理围栏 -->
- <arg name="x_min" default="-100.0"/>
- <arg name="x_max" default="100.0"/>
- <arg name="y_min" default="-100.0"/>
- <arg name="y_max" default="100.0"/>
- <arg name="z_min" default="-1.0"/>
- <arg name="z_max" default="50.0"/>
- <!-- run the swarm_estimator.cpp -->
- <node pkg="prometheus_swarm_control" type="swarm_estimator" name="swarm_estimator_uav1" output="screen">
- <param name="input_source" value="$(arg input_source)" />
- <param name="uav_id" value="$(arg uav1_id)"/>
- </node>
- <!-- 启动swarm_controller -->
- <node pkg="prometheus_swarm_control" type="swarm_controller" name="swarm_controller_uav1" output="screen">
- <param name="swarm_num_uav" value="$(arg swarm_num_uav)"/>
- <param name="uav_id" value="$(arg uav1_id)"/>
- <param name="Takeoff_height" value="$(arg Takeoff_height)"/>
- <param name="Disarm_height" value="$(arg Disarm_height)"/>
- <param name="Land_speed" value="$(arg Land_speed)"/>
- <param name="geo_fence/x_min" value="$(arg x_min)"/>
- <param name="geo_fence/x_max" value="$(arg x_max)"/>
- <param name="geo_fence/y_min" value="$(arg y_min)"/>
- <param name="geo_fence/y_max" value="$(arg y_max)"/>
- <param name="geo_fence/z_min" value="$(arg z_min)"/>
- <param name="geo_fence/z_max" value="$(arg z_max)"/>
- </node>
- <!-- 启动地面站 -->
- <node pkg="prometheus_swarm_control" type="swarm_ground_station" name="swarm_ground_station" output="screen" launch-prefix="gnome-terminal --tab --">
- <param name="swarm_num_uav" value="$(arg swarm_num_uav)"/>
- </node>
- <node pkg="prometheus_swarm_control" type="swarm_terminal_control" name="swarm_terminal_control" output="screen" launch-prefix="gnome-terminal --">
- <param name="uav_id" value="$(arg uav1_id)"/>
- </node>
- </launch>
复制代码
打开rqt_grapth 显示 订阅mavros节点的 、mavros/imu/data ,以及 控制发布的/mavros/setpoint_raw/local 并没有订阅以及发布成功。
看了半天不知道是因为什么。
仿真 rqt_grapth 图
修改后真机图
代码都看明白了,就是不知道为什么订阅消息不成功。
请大佬指点
|
|
|
|
|
|
|
|