打印_battery_status.scale
来源:互联网 发布:linux cpu 超过100 编辑:程序博客网 时间:2024/06/05 03:12
在px4的姿态控制中,publish控制量时代码乘以了一个_battery_status.scale,
/* scale effort by battery status */if (_params.bat_scale_en && _battery_status.scale > 0.0f) {for (int i = 0; i < 4; i++) {_actuators.control[i] *= _battery_status.scale;}}
不知道代表什么意思,于是想办法把它打印出来,借用洛神提供的ubantu14.04编译环境,地址(https://github.com/luoshi006/luoshi006_communication/blob/master/CSDN_blog/PX4/PX4%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%EF%BC%88Ubuntu%201404%EF%BC%89.md),这个编译环境提供了很多有用的工具。这里采用px4提供的px4_simple_app打印,编译上传到飞控后,将飞控和地面站qgc连接;将电池经降压模块降压后连接到飞控,通过地面站的nsh运行px4_simple_app输出结果输出结果
代码:
__EXPORT int px4_simple_app_main(int argc, char *argv[]);int px4_simple_app_main(int argc, char *argv[]){PX4_INFO("Hello Sky!"); int _actuators_0_sub = orb_subscribe(ORB_ID(actuator_controls_0)); int _battery_status_sub = orb_subscribe(ORB_ID(battery_status)); struct battery_status_s_battery_status; struct actuator_controls_s_actuators01; orb_copy(ORB_ID(battery_status), _battery_status_sub, &_battery_status); orb_copy(ORB_ID(actuator_controls_0), _actuators_0_sub, &_actuators01); bool updated;orb_check(_battery_status_sub, &updated); if (updated) { orb_copy(ORB_ID(battery_status), _battery_status_sub, &_battery_status); } orb_check(_actuators_0_sub, &updated); if (updated) { orb_copy(ORB_ID(actuator_controls_0), _actuators_0_sub, &_actuators01); } static int error_counter = 1; int counter =1; while (counter < 2) { if (error_counter == 1) { error_counter ++; } else if (error_counter <= 500) { error_counter ++; } else { error_counter = 1; counter++; PX4_INFO("_actuators01.control:\t%8.4f\t%8.4f\t%8.4f\t%8.4f\n", (double)_actuators01.control[0], (double)_actuators01.control[1], (double)_actuators01.control[2], (double)_actuators01.control[3]); PX4_INFO("_battery_status.scale:\t%8.4f\t%8.4f\n", (double)_battery_status.scale , (double)_battery_status.voltage_filtered_v); for (int i = 0; i < 4; i++){ PX4_INFO("_actuators01.control/_battery_status.scale:\t%8.4f\n", (double)_actuators01.control[i]/(double)_battery_status.scale ); } } }PX4_INFO("exiting");return 0;}截取的结果:
12.6V
INFO [px4_simple_app] _actuators01.control: -0.0273 -0.0129 -1.0473 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 12.6546
12v(电压表测量结果)
INFO [px4_simple_app] _actuators01.control: -0.0256 -0.0145 -1.0472 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 12.0855
11.55V
NFO [px4_simple_app] _actuators01.control: -0.0266 -0.0140 -1.0470 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 11.6839
11.08V
INFO [px4_simple_app] _actuators01.control: -0.0262 -0.0149 -1.0470 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 11.1986
10.53V
INFO [px4_simple_app] _actuators01.control: -0.0256 -0.0161 -1.0470 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 10.6086
10.03v
INFO [px4_simple_app] _actuators01.control: -0.0258 -0.0161 -1.0470 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app] _battery_status.voltage_filtered_v: 10.1130
9.50v
INFO [px4_simple_app] _actuators01.control: -0.0266 -0.0163 -1.0472 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 9.5028
9.08v
INFO [px4_simple_app] _actuators01.control: -0.0289 -0.0146 -1.0475 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0909
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 9.1377
无电池
INFO [px4_simple_app] _actuators01.control: -0.0247 -0.0161 -1.0472 0.0000
INFO [px4_simple_app] _battery_status.scale: 1.0000
INFO [px4_simple_app]_battery_status.voltage_filtered_v: 0.0000
(有时候会莫名其妙的显示INFO [px4_simple_app] _battery_status.scale: 0,找不到原因,出现这种情况后,可能摇一摇飞机就好,也可能就一直是0,不知道是bug还是什么原因,希望以后的深入学习会明白吧)
(虽然打印出来了结果,但还不明白为什么这么,可能希望控制量和电池情况有关吧)
- 打印_battery_status.scale
- Scale
- Scale
- Scale
- picture scale
- Scale总结
- map Scale
- Scale 实例
- scale space
- Shader Scale
- Scale OUT 与 Scale UP?
- Scale-up and Scale-out
- Scale OUT还是Scale UP?
- Scale up和Scale out
- Scale Up和Scale Out
- Scale horizontally和Scale vertically
- Scale-up and Scale-out
- Scale up and Scale out
- 单向循环链表的实现
- js中创建元素createElement\createTextNode\appendChild
- MATLAB中生成随机数方法总结
- shiro-03shiro的filterChainDefinitions
- UI5开发 – 解决Fiori LaunchPad不能加载Google API问题
- 打印_battery_status.scale
- 进程控制编程
- Java之Thread总结
- 无刷无霍尔BLCD电机控制
- 计算机网络系列(7)之应用场景Search engine
- 【拓扑+堆】BZOJ4010(HNOI2015)[菜肴制作]题解
- Android面试题
- Java集合框架上机练习题
- 实验二 交换机路由器基本配置--自我操作