当前位置: 首页 > news >正文

域名 空间 建网站邯郸哪家公司做企业网站比较专业

域名 空间 建网站,邯郸哪家公司做企业网站比较专业,做平面设计必知的网站,WordPress有时候快有时候慢无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整 0 前言 之前文章添加了一个自定义的模块#xff0c;本篇文章在之前的自定义模块中#xff0c;添加两个自定义参数 使用QGC显示出来#xff0c;并通过QGC调整参数值#xff0c;代码实现参数更新 新增的参…无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整 0 前言 之前文章添加了一个自定义的模块本篇文章在之前的自定义模块中添加两个自定义参数 使用QGC显示出来并通过QGC调整参数值代码实现参数更新 新增的参数放在 jone_demo_params.c文件里面 之前定义的模块中一直在终端打印一个消息本节中设置一个bool型参数为1 打印一个消息为0 打印另一个消息 并且设置一个float型参数将该参数值打印出来 1 PX4 添加自定义参数方法 PX4定义参数 在具体模块的 **_params.c文件中进行 通过函数 PARAM_DEFINE**()例如 PARAM_DEFINE_INT32 定义整型参数PARAM_DEFINE_FLOAT 定义浮点型参数 目前只有这两种类型 PARAM_DEFINE**() 函数的上面有注释 [!NOTE] 注意注释是有格式要求的不能随意写为了在QGC中进行显示与参数的自动化处理 注释的格式如下 /** 第一行 *短注释 *长注释 *标签 PARAM_DEFINE**() 标签以为开头标签的内根据参数的类型来定具体有 unit 单位16 min 最小值16 max 最大值 value 各值代表的不同含义 boolean 布尔型参数decimal 指定参数值的小数位数increment 参数的调整步长。group 分组 PARAM_DEFINE**() 函数的 参数第一个为定义的参数名称第二个为默认值 参数名称 [!NOTE] 注意参数的名字不能超过16个字符 默认值 下面是原有PX4定义好的参数的例子 浮点型参数 /*** VTOL Takeoff relative loiter altitude.** Altitude relative to home at which vehicle will loiter after front transition.** unit m* min 20* max 300* decimal 1* increment 1* group VTOL Takeoff*/ PARAM_DEFINE_FLOAT(VTO_LOITER_ALT, 80);整型参数 /*** Maximum number of search attempts** Maximum number of times to search for the landing target if it is lost during the precision landing.** min 0* max 100* group Precision Land*/ PARAM_DEFINE_INT32(PLD_MAX_SRCH, 3);具体的参数自动处理代码在Tools/module_config 下面的几个python文件中例如 generate_params.py 中的核心代码 # get the type and extract all tagstags group {:}.format(param_group)if param[type] enum:param_type INT32for key in param[values]:tags \n * value {:} {:}.format(key, param[values][key])elif param[type] bitmask:param_type INT32for key in param[bit]:tags \n * bit {:} {:}.format(key, param[bit][key])max_val max(key for key in param[bit])tags \n * min 0tags \n * max {:}.format((1(max_val1)) - 1)elif param[type] boolean:param_type INT32tags \n * booleanelif param[type] int32:param_type INT32elif param[type] float:param_type FLOATelse:raise Exception(unknown param type {:}.format(param[type]))2 代码实践 2.1 定义参数 定义一个bool型变量来控制打印消息a还是b 分组为 demo /*** print msg a or b** Control print msg a or b** boolean* group demo*/ PARAM_DEFINE_INT32(PRINT_MSG_A_EN, 1);定义一个float型变量在打印时打印该值 单位 随便定义为s 最小值为0.2 最大值为1.0 小数精度为2 增量步长为0.01 分组为demo /*** print number** Print number value** unit s* min 0.2* max 1.0* decimal 2* increment 0.01* group demo*/ PARAM_DEFINE_FLOAT(PRINT_NUM_VALUE, 0.4f);2.2 使用参数 下面是如何使用上面定义的两个参数 在 JoneDemo.hpp 文件中的类声明中的私有变量区加入如下内容 DEFINE_PARAMETERS((ParamFloatpx4::params::PRINT_NUM_VALUE) _param_print_num_value,(ParamBoolpx4::params::PRINT_MSG_A_EN) _param_print_msg_a_enable,);DEFINE_PARAMETERS 就是固定使用之前参数文件定义的参数的函数方法按照这个格式写 px4::params::定义参数名称 后面跟 代码中对应的变量 [!NOTE] 注意参数对应的变量不能直接使用在使用该值的时候需要使用.get()函数更改值的时候使用.set()函数. 否则编译报错 在 JoneDemo.cpp 的Run()函数中加入 使用该两个变量的代码 if(_param_print_msg_a_enable.get()){printf(MSG a print value : %f \r\n,(double)_param_print_num_value.get());}else{printf(hello jone\r\n);}2.3 参数更新 参数更新 如果不进行下面的参数更新的操作那么在使用的时候QGC里改了参数代码里不会改 涉及到的函数parameters_update(bool force) 在里面加入内容 // check for parameter updatesif (_parameter_update_sub.updated() || force) {// clear updateparameter_update_s pupdate;_parameter_update_sub.copy(pupdate);// update parameters from storageModuleParams::updateParams();SuperBlock::updateParams();printMsgAEnable _param_print_msg_a_enable.get();printNumValue _param_print_num_value.get();}前面四行是固定的检测的参数更新时进行更新 最后两行则是新定义了两个变量对应更新到的参数这样更新后就被赋值了不用在后面执行是一直执行get()函数 _parameter_update_sub 变量需要在JoneDemo.hpp文件声明 uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};在构造函数中加入强制执行参数更新一次这样上电变量就会获得参数 parameters_update(true);然后再后面的Run函数中之前本身就有parameters_update(false); 也就是检测到参数变化了才会更新一次 在JoneDemo.hpp文件中的私有区定义这两个变量就行 float printNumValue;bool printMsgAEnable;对应的JoneDemo.cpp 文件中的cpp函数则改为使用这两个变量 if(printMsgAEnable){printf(MSG a print value : %f \r\n,(double)printNumValue);}else{printf(hello jone\r\n);}3 测试 删除掉原来的build文件夹下的px4_sitl_default 然后再编译 make px4_sitl_default 再执行 make px4_sitl_default gazebo终端打印出了应该输出的内容 打开QGC打开参数列表先点击刷新 然后搜索定义的那两个变量名 第1个bool变量PRINT_MSG_A_EN 可以看到再选择值里面可以选择 Enabled和Disabled就是因为参数定义时声明了标签boolean 同样可以看到长注释Control print msg a or b 此时将 该变量改为Disabled 终端按照代码逻辑输出了hello jone 第二个看那个float型参数PRINT_NUM_VALUE 数字后面有个s,就是单位的标签 有最小值和最大值的标签小数点后面有两位就是decimal 2的标签 此时将 该变量改为0.26则终端对应打印的数据也进行改变 这样就完成了在PX4中添加自定义bool型、float型的参数与测试。
http://www.w-s-a.com/news/721944/

相关文章:

  • 手机端便民服务平台网站建设昆明网络哪家好
  • 产品网站建设找哪家舟山信息港
  • 唐山网站建设汉狮怎么样seol英文啥意思
  • 深圳小程序网站开发公司网页制作模板视频教程
  • 电子商务网站开发开题报告wordpress更改后台地址
  • 网站静态前端是什么工作
  • 餐饮门户网站 方案怎么做创业好项目
  • 做百度手机网站推广普通话的宣传标语
  • 记事本可以做网站吗网站服务器是主机吗
  • 手机网站被拦截怎么办怎么解决东营建设信息网网
  • 外贸网站模板免费微信网站开发技术
  • 视频盗版网站怎么做福州网站seo
  • 成都金铭 网站建设做网站包含的技术
  • 长沙的网站建设公司哪家好做网站应选那个主题
  • 公司网站百度搜不到如何自己做一个网站
  • 学生如何建设网站网站开发程序
  • 网站建设公司哪家好 皆来磐石网络网站建设"淘宝网" 在颜色选取和搭配方面有哪些值得学习的地方.
  • 网站如何做移动规则适配北京住房与城乡建设部网站
  • 课堂阵地建设网站wordpress运行机制
  • 网站建设的需求方案企业网站建设费用明细
  • 创口贴网站模板京创影视app
  • 团购网站建设目的网站有很多304状态码
  • 运用阿里云怎么做网站外资企业可以在中国境内做网站吗
  • 云南住房和城乡建设局网站西安做官网的公司
  • 企业网站图片上传网站建设和应用的情况
  • 网站不显示内容吗聊城网架公司
  • 南昌网站建设企业网站托管外包怎么做
  • 做非洲外贸的网站网站可以用PS设计吗
  • PHP搭建IDC网站青岛福瀛建设集团网站
  • 安徽网站优化多少钱软件界面设计的基本原则