px4自带教程offboard下的gazebo多无人机编队仿真

px4自带教程offboard下的gazebo多无人机编队仿真

主要教程参考这篇文章,offboard代码也源自下面链接,增加了其他文件的配置细节,链接如下:
https://blog.csdn.net/weixin_43409270/article/details/114703341?spm=1001.2014.3001.5501

前提:

我的px4版本较旧,现在重新去github上px4-Autopilot上下载的PX4-Autopilot/launch/multi_uav_mavros_sitl.launch文我下载的里面参数配置不同,我参考官网最新的代码进行修改,主要修改以下两部分1、/home/zy/PX4/Firmware/launch/multi_uav_mavros_sitl.launch文件 2、/home/zy/PX4/Firmware/posix-configs/SITL/init/ekf2/iris_0(在原有iris_1、iris_2的基础上复制了iris_3、iris_4)

1、 修改multi_uav_mavros_sitl.launch文件

参考以下官网最新launch文件最后面增加无人机后的端口修改方法如下:

<!-- to add more UAVs (up to 10):
Increase the id
Change the name space
Set the FCU to default="udp://:14540+id@localhost:14550+id"
Set the malink_udp_port to 14560+id) -->

就是说对UAV1,ID=1,则

<arg name="fcu_url" default="udp://:14540+1(ID)@localhost:14550+1(ID)"/>
<arg name="mavlink_udp_port" value="14560+1(ID)"/>

修改完成后UAV1部分完整代码如下:

<!-- UAV1 -->
    <group ns="uav1">
        <!-- MAVROS and vehicle configs -->
        <arg name="ID" value="1"/>
        <arg name="fcu_url" default="udp://:14541@localhost:14551"/>
        <!-- PX4 SITL and vehicle spawn -->
        <include file="$(find px4)/launch/single_vehicle_spawn.launch">
            <arg name="x" value="0"/>
            <arg name="y" value="0"/>
            <arg name="z" value="0"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="$(arg vehicle)"/>
            <arg name="rcS" value="$(find px4)/posix-configs/SITL/init/$(arg est)/$(arg vehicle)_$(arg ID)"/>
            <arg name="mavlink_udp_port" value="14561"/>
            <arg name="ID" value="$(arg ID)"/>
        </include>
        <!-- MAVROS -->
        <include file="$(find mavros)/launch/px4.launch">
            <arg name="fcu_url" value="$(arg fcu_url)"/>
            <arg name="gcs_url" value=""/>
            <arg name="tgt_system" value="$(arg ID)"/>
            <arg name="tgt_component" value="1"/>
        </include>
    </group>

然后复制这部分,命名空间改为UAV2/3/4,ID依次为2、3、4,然后参考UAV1修改fcu_url、mavlink_udp_port的值。

2、修改/home/zy/PX4/Firmware/posix-configs/SITL/init/ekf2中iris无人机参数

由于上一步我们修改了launch文件中的每架无人机的端口号,所以要在原本PX4中的iris的端口参数设置中进行修改,让其与launch文件中的端口号一致。
修改参考以下链接:
https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486
在这里插入图片描述

如果是四架无人机,就复制两次iris_1或iris_2,并分别命名为iris_3,iris_4
以iris_1为例,打开参考multi_uav_mavros_sitl.launch文件,修改以下四部分:
1、MAV_SYS_ID 修改为 (ID数);

param set MAV_SYS_ID 1

2、SITL_UDP_PRT 值要与位于启动脚本中 mavlink_udp_port 参数匹配;

param set SITL_UDP_PRT 14561

3、第一个 mavlink start 端口号要与 mavlink stream 端口号一致,用于与QGC通信。其余iris模型中的第一个mavlink start 值依次加2;

mavlink start -x -u 14556 -r 4000000

4、第二个 mavlink start 端口号要与启动脚本中 fcu_url 参数一致。

mavlink start -x -u 14551 -r 4000000 -m onboard -o 14541

注:
1、如果运行报错说找不到iris_?,可能是iris命名问题,看看报错的找不到iris几,回去看看自己文件夹下有没有这个iris。
2、offboard里面的uav序号也要注意,尽力所以文件序号一致,从零开始计数无人机个数就都从零开始,从一开始计数无人机个数就都从一开始,方便自己后续查找修改问题

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
对于 PX4 Offboard 模式下的多航点任务,你可以使用 Mission mode 来实现。下面是一个简单的示例代码,用于在 Offboard 模式下执行多个航点任务: ```cpp #include <px4_offboard/px4_offboard.h> int main(int argc, char** argv) { // 初始化 Offboard 控制PX4Offboard offboard; // 连接到 PX4 if (!offboard.connect()) { std::cout << "Failed to connect to PX4" << std::endl; return -1; } // 设置 Offboard 模式 if (!offboard.setOffboardMode()) { std::cout << "Failed to set Offboard mode" << std::endl; return -1; } // 创建一个包含多个航点的任务 std::vector<px4_offboard::MissionPoint> mission_points; // 添加第一个航点 px4_offboard::MissionPoint point1; point1.position.x = 1.0; point1.position.y = 2.0; point1.position.z = 3.0; mission_points.push_back(point1); // 添加第二个航点 px4_offboard::MissionPoint point2; point2.position.x = 4.0; point2.position.y = 5.0; point2.position.z = 6.0; mission_points.push_back(point2); // 添加更多航点... // 执行任务 if (!offboard.executeMission(mission_points)) { std::cout << "Failed to execute mission" << std::endl; return -1; } // 等待任务完成 while (!offboard.isMissionComplete()) { // 可以添加其他逻辑或控制指令 // 例如:更新航点坐标,控制飞行器姿态等 } // 关闭 Offboard 模式 offboard.setManualMode(); return 0; } ``` 这是一个简单的示例,你可以根据实际需求进行更改和扩展。注意,在执行任务之前,确保你已经正确地配置了 PX4 中的 Offboard 模式和相关参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值