自定义任务

  1. 头文件冒号引用的是当前目录的子文件夹
  2. 终端输入make px4_sitl_default boardconfig,调用gui界面将任务加入到px4代码中。
  3. 在路径“ROMFS/cannode/px4fmu_common/init.d/rc.mc_apps”,输入test_demo start,使得程序一启动就运行。

自定义参数

  1. 定义整型参数,在test_demo_params.c文件中输入:
/**
 * TestDemo Enable
 *
 * Display the test demo hello.
 *
 * @boolean
 * @group Demo
 */
PARAM_DEFINE_INT32(T_DEMO_EN, 1);
  • 注释内容不可随意写,在qgc中会依据注释内容调整
  • 第一行为描述
  • 第三行为在qgc中显示的描述
  • 第五行表示这是一个二进制数
  • 第六行表示该参数的分组
  • 最后一行表示该参数名称为T_DEMO_EN,参数名称长度不能大于16,默认值为1
  1. 定义浮点数参数,在test_demo_params.c文件中输入:
/**
 * TestDemo length
 *
 * TestDemo UAV length
 *
 * @unit m
 * @min 0.0
 * @max 1.0
 * @increment 0.01
 * @group Demo
 */
PARAM_DEFINE_FLOAT(T_DEMO_LEN, 0.225f);
  • 单位米,最小值与最大值为0和1,步进0.01,分组为demo,参数名称为T_DEMO_LEN,默认值为0.225f。
  1. 在文件TestDemo.hpp中输入:
	DEFINE_PARAMETERS(
		// Position Control
		(ParamFloat<px4::params::T_DEMO_LEN>)         _param_t_demo_len,
		(ParamInt<px4::params::T_DEMO_EN>)       _param_t_demo_en
	);
  • 在头文件中定义的变量通常以_开头
  1. 在TestDemo.hpp中定义局部变量:
    bool t_demo_en;
	float t_demo_len;
  1. 在TestDemo.cpp文件中的void TestDemo::parameters_update(bool force)输入:
void TestDemo::parameters_update(bool force)
{
	// check for parameter updates
		if (_parameter_update_sub.updated() || force) {
			// clear update
			parameter_update_s pupdate;
			_parameter_update_sub.copy(&pupdate);

			// update parameters from storage
			ModuleParams::updateParams();
			SuperBlock::updateParams();

			t_demo_en = _param_t_demo_en.get();
			t_demo_len = _param_t_demo_len.get();
		}
}
  • 此步意在给自定义的局部变量赋值
    同时,在TestDemo.hpp文件中订阅_parameter_update_sub消息:
uORB::SubscriptionInterval _parameter_update_sub {ORB_ID(parameter_update), 1_s};
  1. 在构造函数中,为程序启动时设置强制参数更新:
parameters_update(true);
  1. 在run函数中,取消参数强制更新,以此提高运行效率:
parameters_update(false);
  1. 在run函数中调用参数:
		if(t_demo_en){
			printf("Hello sky! %f\r\n",(double)dt);
		} else {
			printf("Hello land! %f\r\n",(double)t_demo_len);
		}
  • 不在parameters_update中更新参数,而是在run中直接使用if(_param_t_demo_en.get()),似乎不会执行else后面的语句
  1. 在qgc中可以修改自定义的参数T_DEMO_EN和T_DEMO_LEN,并看到相关注释,参数选择范围依据test_demo_params.c中的注释内容进行限制。
posted on 2024-07-12 10:22  导航到海布里球场  阅读(202)  评论(0)    收藏  举报