菜单

指令飞行与控制

下载

本篇内容:使用控制程序实现对无人机的任务控制
注意:本篇需要拥有外部定位支持,以下基于动捕定位实现(https://wiki.yundrone.cn/docs/CklZxSfn)

相关说明

在使用前需要了解Sunray的控制模块中的几种模式

  • INIT:该模式在无人机处于上锁模式时会自动尝试将PX4模式更改为定点模式,初始运行时将处于该模式
  • RC_CONTROL:该模式能在不退出Offboard模式下使用遥控器控制无人机,需要搭配rc_control_node节点使用
  • CMD_CONTROL:该模式将响应外部发送的控制指令(通过话题发布)
  • LAND_CONTROL:降落模式
  • WITHOUT_CONTROL:该模式不参与任何控制
  • 如果需要切回遥控器控制需要手动拨动遥控器上的模式切换按钮,切换到其他模式即可退出程序控制

启动节点

运行mavros连接飞控

bash 复制代码
# 打开终端 启动ros
cd ~/Sunray
roscore

# 启动mavros连接无人机
roslaunch sunray_uav_control sunray_mavros_exp.launch 

运行定位算法

bash 复制代码
# 运行外部定位模块 定位源话题为/Odometry
roslaunch sunray_uav_control external_fusion.launch external_source:=3

运行控制节点

重要参数说明

  • geo_fence:地理围栏,包含x、y、z三个方向的最大最小值,超出范围无人机会降落
  • flight_param:无人机飞行相关的参数
    • land_type:降落模式 1:调用px4 auto.land 0:到达指定高度后锁桨,注意在非gps模式下使用 px4 auto.land 会出问题
    • Disarm_height:锁桨高度,无人机将在降落到 解锁高度 + Disarm_height 后进入最后一段降落过程
    • Land_speed:无人机降落速度
    • land_end_time:降落最后一段降落过程的时长 降落最后一阶段以land_end_speed的速度向下飞行land_end_time时间后锁桨
    • land_end_speed:降落最后一段降落过程的速度
  • system_params:程序内部一些重要的参数
    • use_rc_control:是否使用遥控器控制,为false的时候允许先切换到Offboard模式再解锁,适用于没有遥控的情况
    • check_cmd_timeout:是否检查指令超时,在cmd_timeout时长内没有收到下一个控制指令后会自动切换到悬停
    • cmd_timeout:指令超时时长
    • odom_valid_timeout:外部定位超时时长,超出改时长会降落
    • use_offset:是否使用位置偏移模式,位置偏移模式会在无人机解锁处重置为原点(仅在程序内部实现,并不是无人机fcu状态),只对位置控制生效,适用于GPS模式的时候
bash 复制代码
# 启动节点
roslaunch sunray_uav_control sunray_control_node.launch
/
运行结果

运行键盘控制节点

键盘控制节点能够通过按动按钮实现对无人机解锁起飞移动降落等操作

关于键盘控制的说明
101 为无人机上解锁或上锁 回车后需要二次输入, 其中 1为解锁 0为上锁
102 为选择切换到指定的控制模式,回车后需要二次输入, 其中 1 INIT模式 2 RC_CONTROL模式 3 CMD_CONTROL模式 4 LAND_CONTROL模式 5为WITHOUT_CONTRO模式
103 为起飞、104悬停、105降落、106返航、107、执行航点(需要提前发布航点信息)、108发布一个目标点(可用于发布自主规划的目标点)
无人机在解锁后会怠速一段时间,中间如果没有其他操作的话无人机会重新上锁,所以在解锁后请立即切换到CMD_CONTROL模式,在上锁的情况下无法切换到CMD_CONTROL模式
起飞以及下面的指令任务等需要在无人机已经解锁的状态且切换到了CMD_CONTROL模式才会执行
CMD: 1 位置控制 2 速度控制 3 水平速度+垂直位置控制 ...

bash 复制代码
# 启动节点
roslaunch sunray_uav_control terminal_control.launch
# 基本使用方式
  # 输入 101 回车进入选择解锁或者上锁
    # 输入 1 回车 无人机解锁
  # 输入 102 选择切换到指定的控制模式
    # 输入 3 回车 切换到指令模式
  # 输入 103 执行起飞 等待无人机起飞
  # 104 悬停
  # 105 降落
/
  • 进行模式切换
    在解锁的基础上,需要切换状态机中的模式根据终端提示“102 control_mode",在页面下方输入102,再根据显示切换到相应的模式,此处应切换到3 CMD_CONTROL模式:
/
/
  • 解锁
    所有操作都要基于飞机解锁的情况上去执行,没有解锁无法进行想要的操作!
    根据终端提示“101 arm or disarm",在下方进行输入101
/

验证是否解锁成功:观察uav_control节点是否会出现“ARMED",以及无人机飞行桨是否转动。

/
  • 控制移动的操作方式(以CMD_CONTROL模式进行说明)

完成CMD_CONTROL模式初始化后,需重点关注控制台输出的控制指令参数行,其标准显示格式为:

/

不同数字对应着机体进行不同操作的飞行动作,以下是对各种飞行动作的解释:

  1. XyzPos:惯性系定点控制 保持当前偏航角
  2. XyzVel:惯性系XYZ速度控制 保持当前偏航角
  3. XyVelZPos:惯性系XY速度 Z位置 保持当前偏航角
  4. XyzPosYaw:惯性系定点控制 加偏航角
  5. XyzVelYaw:惯性系XYZ速度控制 加偏航角
  6. XyVelZPosYaw:惯性系XY速度 Z位置 加偏航角
  7. XyzPosYawBody:机体坐标系XYZ位置 加偏航角
  8. XyzVelYawBody:机体坐标系XYZ速度 加偏航角
  9. GlobalPos:全局坐标 经纬度海拔

可以根据自身想要实现的控制,输入相对应的控制代号。

例:实现XyzPos惯性系定点控制
在终端输入1,然后需要输入目标点的XYZ坐标:

/

输入完成后回车发送,观察无人机是否有向目标点移动。

上一个
FastLIO2雷达定位
下一个
示例程序测试
最近修改: 2025-09-20