交流学习加qq:2096723956

文件

以垂起切换为例
send_vehicle_command(vehicle_command_s::VEHICLE_CMD_DO_VTOL_TRANSITION,
(float)(status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING ?
vtol_vehicle_status_s::VEHICLE_VTOL_STATE_FW :
vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC));

函数send_vehicle_command
第一个参数vehicle_command_s::VEHICLE_CMD_DO_VTOL_TRANSITION就是一个标志位

第二个参数vtol_vehicle_status_s::VEHICLE_VTOL_STATE_FW :也是一个标志位,值是4,表示由旋翼切到固定翼,如果有固定翼切到旋翼,就是3.

参看send_vehicle_command函数可以知道,这个函数是通过发布vehicle_command_s切换模式,我们也可以直接通过发布这个话题实现切换,主要注意两点
一个是vcmd.command = cmd,也就是vcmd.command=vehicle_command_s::VEHICLE_CMD_DO_VTOL_TRANSITION
还有vcmd.param1 = param1;也就是
vcmd.param1 = 3的话就是切到旋翼=4就是切到固定翼。这两个赋值之后再对
vcmd.source_system = vehicle_status_sub.get().system_id;
vcmd.target_system = vehicle_status_sub.get().system_id;
vcmd.source_component = vehicle_status_sub.get().component_id;
vcmd.target_component = vehicle_status_sub.get().component_id;

vcmd.timestamp = hrt_absolute_time();

这些赋值完就可以发布了。发布之后就可以切换模式了

static bool send_vehicle_command(uint16_t cmd, float param1 = NAN, float param2 = NAN, float param3 = NAN,
float param4 = NAN, float param5 = NAN, float param6 = NAN, float param7 = NAN)
{
vehicle_command_s vcmd{};

vcmd.param1 = param1;
vcmd.param2 = param2;
vcmd.param3 = param3;
vcmd.param4 = param4;
vcmd.param5 = (double)param5;
vcmd.param6 = (double)param6;
vcmd.param7 = param7;vcmd.command = cmd;uORB::SubscriptionData<vehicle_status_s> vehicle_status_sub{ORB_ID(vehicle_status)};
vcmd.source_system = vehicle_status_sub.get().system_id;
vcmd.target_system = vehicle_status_sub.get().system_id;
vcmd.source_component = vehicle_status_sub.get().component_id;
vcmd.target_component = vehicle_status_sub.get().component_id;vcmd.timestamp = hrt_absolute_time();uORB::PublicationQueued<vehicle_command_s> vcmd_pub{ORB_ID(vehicle_command)};return vcmd_pub.publish(vcmd);

}

如果不知道自己想切换的模式的command和param是多少,可以查看commander.cpp文件里是怎么赋值的

PX4自主设置飞行模式相关推荐

  1. iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式)

    在iphone上使用动态库的多为dylib文件,这些文件使用标准的dlopen方式来使用是可以的.那相同的在使用framework文件也可以当做动态库的方式来动态加载,这样就可以比较自由的使用appl ...

  2. Mission Planner初学者安装调试教程指南(APM或PIX飞控)4——校准加速度计、指南针、遥控器、设置飞行模式

    目录 1.加速度计校准. 2.指南针校准. 3.遥控器校准. 安装完固件后,无人机并不能马上解锁起飞,必须进行校准加速度计.指南针.遥控器,下面就逐一进行校准,该环境使用的是APM2.8.Missio ...

  3. Mission Planner初学者安装调试教程指南(APM或PIX飞控)6——富斯i6通过mission planner设置飞行模式(结合二挡三挡开关设置六种飞行模式)及主要飞行模式简介

    目录 一.遥控器设置 第一步要对遥控器进行设置.不同的教程有不同的推荐数值,这是一种测试可用的方案.missionplanner可以在初始设置飞行模式设置六种模式. 警告⚠️ 1.飞行模式需要其他模块 ...

  4. 获取iphone的IMSI和设置飞行模式

    iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式)  在iphone上使用动态库的多为dylib文件,这些文件使用标准的dlopen方 ...

  5. Android 设置飞行模式,判断是否是飞行模式

    飞行模式的好处在于: 1.可以让你拥有一个安静的休息时间 2.减少对身体的辐射 3.可以节省电量 4.不会关闭闹钟 所以设置飞行模式的功能,是很有用处的. 现分享如下: 代码中设置飞行模式所需权限: ...

  6. 代码设置飞行模式 ios iphone

    原文: http://blogs.oreilly.com/iphone/2009/01/bring-airplane-mode-control-ba.html 代码比较老了.我试过了,在我的pad 4 ...

  7. android+飞行模式+收音机,Jelly Bean中的飞行模式

    我正尝试在Android 4.2.2中设置Nexus 4中的飞行模式. 我知道这是不可能的,因为AIRPLANE_MODE_ON被移动到Global system settings,它只是一个读取选项 ...

  8. iOS设备中WiFi、蓝牙和飞行模式的开启与关闭

    今天写了一段有关在iPhone程序中开关WiFi型号的代码,经测试运行良好. 我想不用我多说大家都应该知道以上的功能只能在越狱的设备中实现! 好了,闲话稍少叙,进入正题:1.首先要在SpringBoa ...

  9. iphone开发之获取是否飞行模式和设备IMEI(私有IPA)

    在iphone的开发环境下,有时候需要获取的设备信息的时候是比较困难,没有和android一样的源码开放,但是通过其他的很多途径,我们可以获取到许多意想不到的信息. NetworkController ...

  10. iphone开发之获取是否飞行模式和设备IMEI

    在iphone的开发环境下,有时候需要获取的设备信息的时候是比较困难,没有和android一样的源码开放,但是通过其他的很多途径,我们可以获取到许多意想不到的信息. NetworkController ...

最新文章

  1. 随机生成文件名字或随机生成一个数
  2. usb网络linux系统安装教程,Linux系统入门学习:如何在树莓派上安装USB网络摄像头...
  3. 3 命名空间与命名规范
  4. react打包后图片丢失_使用 webpack 搭建 React 项目
  5. android json传输数据到服务器,Android中post请求传递json数据给服务端的实例
  6. SQL数据库高级查询命令(3)
  7. SpringBoot注解@Value取值取不到问题
  8. axios的二次封装与async,await的配合使用?
  9. 用 js判断 一个数是否是素数(质数)_小学数学知识点1~6年级汇总整理,收藏起来随时用!(下)...
  10. buffer正确的拼接方式
  11. 详解机器学习算法基础--K近邻算法
  12. Spring Bean作用域
  13. ROS2入门教程—录制/回放数据
  14. 大聊Python----Select解析
  15. Qt之QTextEdit
  16. 高精度阶乘和 高精度算法(c语言)
  17. 在Xcode中配置Python 并支持input
  18. Electron+Vue3+Vite+Element-Plus,保持软后台全速运行(解决循环过多导致的界面不刷新问题,保证窗口失去焦点后setTimeOut可用)
  19. CSS 读书笔记
  20. 如何把一张照片的像素提高_教你三个将低分辨率图片放大放清晰的方法

热门文章

  1. 国际直拨电话号码格式
  2. 主成分分析和因子分析的理论与速成应用丨R语言和SPSS比较案例
  3. wav转mp3格式转换器哪个好
  4. Debian——roundcube报错及解决方法
  5. 学硕与专硕 计算机,2019计算机考研选学硕还是专硕?
  6. 数据分析师面试题目_数据分析师面试的77个常见问题,你准备好了吗?
  7. html5判断文字超过几行,判断文字数量超过2行 添加展开按钮 未超过两行则不显示按钮 溢出部分显示省略号...
  8. [FAQ06649] Latin输入法怎么默认勾选几种语言?
  9. Unity中项目资源管理与优化
  10. Ubuntu14.04 学习一:adobe Flash 下载和安装