Moved navdata initialization to configureDrone() rather than happening the first time that navdata is sent

Esse commit está contido em:
Mike Hamer
2012-11-27 13:51:32 +01:00
commit af03f2536e
3 arquivos alterados com 1153 adições e 1140 exclusões
+29 -25
Ver Arquivo
@@ -31,11 +31,7 @@
bool initialized_navdata_publishers; bool initialized_navdata_publishers;
#endif #endif
#ifdef NAVDATA_STRUCTS_SOURCE #ifdef NAVDATA_STRUCTS_INITIALIZE
void ARDroneDriver::PublishNavdataTypes(navdata_unpacked_t &n)
{
const ros::Time now = ros::Time::now();
if(!initialized_navdata_publishers) if(!initialized_navdata_publishers)
{ {
initialized_navdata_publishers = true; initialized_navdata_publishers = true;
@@ -61,38 +57,46 @@ void ARDroneDriver::PublishNavdataTypes(navdata_unpacked_t &n)
% endfor % endfor
} }
#endif
% for item in structs: #ifdef NAVDATA_STRUCTS_SOURCE
if(enabled_${item['struct_name']} && pub_${item['struct_name']}.getNumSubscribers()>0) void ARDroneDriver::PublishNavdataTypes(navdata_unpacked_t &n)
{
const ros::Time now = ros::Time::now();
if(initialized_navdata_publishers)
{ {
${item['struct_name']}_msg.drone_time = ((double)ardrone_time_to_usec(n.navdata_time.time))/1000000.0; % for item in structs:
${item['struct_name']}_msg.header.stamp = now; if(enabled_${item['struct_name']} && pub_${item['struct_name']}.getNumSubscribers()>0)
${item['struct_name']}_msg.header.frame_id = droneFrameBase; {
${item['struct_name']}_msg.drone_time = ((double)ardrone_time_to_usec(n.navdata_time.time))/1000000.0;
${item['struct_name']}_msg.header.stamp = now;
${item['struct_name']}_msg.header.frame_id = droneFrameBase;
% for member in item['members']: % for member in item['members']:
% if member['array_size'] is None: % if member['array_size'] is None:
{\ {\
${format_member(item, member, None)} ${format_member(item, member, None)}
${item['struct_name']}_msg.${member['name']} = m; ${item['struct_name']}_msg.${member['name']} = m;
} }
% else: % else:
${item['struct_name']}_msg.${member['name']}.clear(); ${item['struct_name']}_msg.${member['name']}.clear();
for(int i=0; i<${member['array_size']}; i++) for(int i=0; i<${member['array_size']}; i++)
{\ {\
${format_member(item, member, 'i')} ${format_member(item, member, 'i')}
${item['struct_name']}_msg.${member['name']}.push_back(m); ${item['struct_name']}_msg.${member['name']}.push_back(m);
} }
% endif % endif
% endfor % endfor
pub_${item['struct_name']}.publish(${item['struct_name']}_msg); pub_${item['struct_name']}.publish(${item['struct_name']}_msg);
} }
//------------------------- //-------------------------
% endfor % endfor
}
} }
#endif #endif
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+6 -1
Ver Arquivo
@@ -137,7 +137,7 @@ void ARDroneDriver::run()
ardrone_control_config.num_version_soft, ardrone_control_config.num_version_soft,
shared_raw_navdata.navdata_demo.vbat_flying_percentage); shared_raw_navdata.navdata_demo.vbat_flying_percentage);
ROS_INFO("Navdata Publish Settings:"); ROS_INFO("Navdata Publish Settings:");
//ROS_INFO(" Legacy Mode: %s", enabled_legacy_navdata ? "On" : "Off"); //Bug: This is being inited after in the NavdataMessage*.h ROS_INFO(" Legacy Mode: %s", enabled_legacy_navdata ? "On" : "Off"); //Bug: This is being inited after in the NavdataMessage*.h
ROS_INFO(" ROS Loop Rate: %d", looprate); ROS_INFO(" ROS Loop Rate: %d", looprate);
ROS_INFO(" Instant New Navdata Publish: %s", fullspeed_navdata ? "On" : "Off"); ROS_INFO(" Instant New Navdata Publish: %s", fullspeed_navdata ? "On" : "Off");
// TODO: Enabled Navdata Demo // TODO: Enabled Navdata Demo
@@ -225,6 +225,11 @@ void ARDroneDriver::configureDrone()
#undef ARDRONE_CONFIG_KEY_IMM_a10 #undef ARDRONE_CONFIG_KEY_IMM_a10
#undef ARDRONE_CONFIG_KEY_REF_a10 #undef ARDRONE_CONFIG_KEY_REF_a10
#undef ARDRONE_CONFIG_KEY_STR_a10 #undef ARDRONE_CONFIG_KEY_STR_a10
#define NAVDATA_STRUCTS_INITIALIZE
#include "NavdataMessageDefinitions.h"
#undef NAVDATA_STRUCTS_INITIALIZE
} }
void ARDroneDriver::resetCaliberation() void ARDroneDriver::resetCaliberation()