中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

建設網(wǎng)站考慮因素寧波seo網(wǎng)絡推廣定制多少錢

建設網(wǎng)站考慮因素,寧波seo網(wǎng)絡推廣定制多少錢,上海網(wǎng)站建設上海邁歌,重慶最近新聞大事件無人機 PX4 飛控 | PX4源碼添加自定義參數(shù)方法并用QGC顯示與調整 0 前言 之前文章添加了一個自定義的模塊,本篇文章在之前的自定義模塊中,添加兩個自定義參數(shù) 使用QGC顯示出來,并通過QGC調整參數(shù)值,代碼實現(xiàn)參數(shù)更新 新增的參…

無人機 PX4 飛控 | PX4源碼添加自定義參數(shù)方法并用QGC顯示與調整

0 前言

之前文章添加了一個自定義的模塊,本篇文章在之前的自定義模塊中,添加兩個自定義參數(shù)

使用QGC顯示出來,并通過QGC調整參數(shù)值,代碼實現(xiàn)參數(shù)更新

新增的參數(shù)放在 jone_demo_params.c文件里面
在這里插入圖片描述

之前定義的模塊中,一直在終端打印一個消息,本節(jié)中設置一個bool型參數(shù),為1 打印一個消息,為0 打印另一個消息

并且設置一個float型參數(shù),將該參數(shù)值打印出來

1 PX4 添加自定義參數(shù)方法

PX4定義參數(shù) 在具體模塊的 **_params.c文件中進行

通過函數(shù) PARAM_DEFINE**(),例如:

  • PARAM_DEFINE_INT32 定義整型參數(shù)
  • PARAM_DEFINE_FLOAT 定義浮點型參數(shù)

目前只有這兩種類型

PARAM_DEFINE**() 函數(shù)的上面有注釋

[!NOTE]

注意:注釋是有格式要求的,不能隨意寫,為了在QGC中進行顯示,與參數(shù)的自動化處理

注釋的格式如下:

/** 第一行

*短注釋

*長注釋

*標簽

PARAM_DEFINE**()

標簽以@為開頭,標簽的內根據(jù)參數(shù)的類型來定,具體有:

  • @unit 單位16

  • @min 最小值16

  • @max 最大值

  • @value 各值代表的不同含義

在這里插入圖片描述

  • @boolean 布爾型參數(shù)
  • @decimal 指定參數(shù)值的小數(shù)位數(shù)
  • @increment 參數(shù)的調整步長。
  • @group 分組

PARAM_DEFINE**() 函數(shù)的 參數(shù),第一個為定義的參數(shù)名稱,第二個為默認值:

  • 參數(shù)名稱

[!NOTE]

注意參數(shù)的名字不能超過16個字符

  • 默認值

下面是原有PX4定義好的參數(shù)的例子

浮點型參數(shù)

/*** 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);

整型參數(shù)

/*** 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);

具體的參數(shù)自動處理代碼在Tools/module_config 下面的幾個python文件中,例如 generate_params.py 中的核心代碼:

                # get the type and extract all tagstags = '@group {:}'.format(param_group)if param['type'] == 'enum':param_type = 'INT32'for key in param['values']:tags += '\n * @value {:} {:}'.format(key, param['values'][key])elif param['type'] == 'bitmask':param_type = 'INT32'for key in param['bit']:tags += '\n * @bit {:} {:}'.format(key, param['bit'][key])max_val = max(key for key in param['bit'])tags += '\n * @min 0'tags += '\n * @max {:}'.format((1<<(max_val+1)) - 1)elif param['type'] == 'boolean':param_type = 'INT32'tags += '\n * @boolean'elif param['type'] == 'int32':param_type = 'INT32'elif param['type'] == 'float':param_type = 'FLOAT'else:raise Exception("unknown param type {:}".format(param['type']))

2 代碼實踐

2.1 定義參數(shù)

定義一個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

小數(shù)精度為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 使用參數(shù)

下面是如何使用上面定義的兩個參數(shù)

在 JoneDemo.hpp 文件中的類聲明中的私有變量區(qū)加入如下內容

	DEFINE_PARAMETERS((ParamFloat<px4::params::PRINT_NUM_VALUE>)         _param_print_num_value,(ParamBool<px4::params::PRINT_MSG_A_EN>)           _param_print_msg_a_enable,);

DEFINE_PARAMETERS 就是固定使用之前參數(shù)文件定義的參數(shù)的函數(shù)方法,按照這個格式寫

px4::params::+定義參數(shù)名稱 后面跟 代碼中對應的變量

[!NOTE]

注意:參數(shù)對應的變量不能直接使用,在使用該值的時候需要使用.get()函數(shù),更改值的時候使用.set()函數(shù).

否則編譯報錯

在 JoneDemo.cpp 的Run()函數(shù)中加入 使用該兩個變量的代碼

	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 參數(shù)更新

參數(shù)更新

如果不進行下面的參數(shù)更新的操作,那么在使用的時候QGC里改了參數(shù),代碼里不會改

涉及到的函數(shù):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();}

前面四行是固定的,檢測的參數(shù)更新時進行更新

最后兩行則是新定義了兩個變量,對應更新到的參數(shù),這樣更新后就被賦值了,不用在后面執(zhí)行是一直執(zhí)行get()函數(shù)

_parameter_update_sub 變量需要在JoneDemo.hpp文件聲明

uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};

在構造函數(shù)中,加入強制執(zhí)行參數(shù)更新一次,這樣上電,變量就會獲得參數(shù)

parameters_update(true);

然后再后面的Run函數(shù)中,之前本身就有parameters_update(false); 也就是檢測到參數(shù)變化了才會更新一次

在JoneDemo.hpp文件中的私有區(qū),定義這兩個變量就行

	float printNumValue;bool printMsgAEnable;

對應的JoneDemo.cpp 文件中的cpp函數(shù),則改為使用這兩個變量

	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 

再執(zhí)行

make px4_sitl_default gazebo

終端打印出了應該輸出的內容

在這里插入圖片描述

打開QGC,打開參數(shù)列表,先點擊刷新

然后搜索定義的那兩個變量名

第1個bool變量PRINT_MSG_A_EN

在這里插入圖片描述

可以看到再選擇值里面可以選擇 Enabled和Disabled,就是因為參數(shù)定義時,聲明了標簽:@boolean

同樣可以看到長注釋:Control print msg a or b

此時將 該變量改為Disabled
在這里插入圖片描述
在這里插入圖片描述

終端按照代碼邏輯輸出了:hello jone

第二個看那個float型參數(shù):PRINT_NUM_VALUE
在這里插入圖片描述

數(shù)字后面有個s,就是單位的標簽

有最小值和最大值的標簽,小數(shù)點后面有兩位,就是@decimal 2的標簽

此時將 該變量改為0.26,則終端對應打印的數(shù)據(jù)也進行改變
在這里插入圖片描述
在這里插入圖片描述
這樣就完成了在PX4中,添加自定義bool型、float型的參數(shù)與測試。

http://www.risenshineclean.com/news/9391.html

相關文章:

  • 邯鄲市住房和城鄉(xiāng)建設網(wǎng)站百度拍照搜題
  • 新浪云服務器做網(wǎng)站瀏覽器廣告投放
  • 做網(wǎng)站_你的出路在哪里創(chuàng)建自己的網(wǎng)站
  • 中國產(chǎn)品網(wǎng)注冊網(wǎng)站站長seo推廣
  • jsp網(wǎng)站空間網(wǎng)絡銷售渠道有哪些
  • 做網(wǎng)站如何排版曹操seo博客
  • 旅游網(wǎng)站首頁設計圖片seo自然排名
  • 免費做網(wǎng)站的網(wǎng)頁如何給自己的公司建網(wǎng)站
  • 怎么將網(wǎng)站做成小程序seo是做什么工作內容
  • 做app 的模板下載網(wǎng)站營銷推廣方案怎么寫
  • 怎樣做動態(tài)網(wǎng)站網(wǎng)上銷售
  • 怎么把統(tǒng)計代碼加到網(wǎng)站網(wǎng)上銷售推廣方案
  • 校園安全網(wǎng)站建設windows優(yōu)化大師有用嗎
  • 通達oa 做網(wǎng)站seo工資
  • 鄂州手機網(wǎng)站建設廣告聯(lián)盟騙局
  • 百度站長平臺網(wǎng)頁版南京seo排名公司
  • 簡單大氣網(wǎng)站欣賞金蝶進銷存免費版
  • .net電子商城網(wǎng)站開發(fā)設計軟文推廣平臺有哪些
  • 無錫企業(yè)網(wǎng)站設計網(wǎng)絡整合營銷的特點有
  • 進入江蘇省住房和城鄉(xiāng)建設廳網(wǎng)站百度推廣外包
  • ip網(wǎng)站怎么做軟文世界平臺
  • 做招聘網(wǎng)站畢業(yè)設計二維碼推廣賺傭金平臺
  • 網(wǎng)站開發(fā)員招聘網(wǎng)絡營銷方案策劃案例
  • 公司怎么找做網(wǎng)站信息流推廣方式
  • 如東做網(wǎng)站公司百度廣告聯(lián)盟收益
  • flash網(wǎng)站設計師今日新聞快訊10條
  • 網(wǎng)站如何在手機端做適配全網(wǎng)營銷
  • 個人興趣圖片集網(wǎng)站建設寧波企業(yè)seo推廣
  • 深圳專業(yè)做網(wǎng)站建設推廣渠道
  • 做的網(wǎng)站每年需要續(xù)費廣州網(wǎng)絡推廣服務商