Merge pull request #41 from mikehamer/master

Fixed bug with navdata handling & improved initialization
Esse commit está contido em:
Mani Monajjemi
2012-11-27 12:04:08 -08:00
3 arquivos alterados com 1154 adições e 1118 exclusões
+29 -24
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,37 +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:
for(int i=0; i<${member['array_size']}; i++) ${item['struct_name']}_msg.${member['name']}.clear();
{\ for(int i=0; i<${member['array_size']}; i++)
${format_member(item, member, 'i')} {\
${item['struct_name']}_msg.${member['name']}.push_back(m); ${format_member(item, member, 'i')}
} ${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
+7 -1
Ver Arquivo
@@ -137,9 +137,10 @@ 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");
ROS_INFO(" Drone Send Speed: %s", ardrone_application_default_config.navdata_demo==0 ? "200Hz (navdata_demo=0)" : "15Hz (navdata_demo=1)");
// TODO: Enabled Navdata Demo // TODO: Enabled Navdata Demo
vp_os_mutex_unlock(&navdata_lock); vp_os_mutex_unlock(&navdata_lock);
if (ardrone_control_config.num_version_soft[0] == '0') if (ardrone_control_config.num_version_soft[0] == '0')
@@ -225,6 +226,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()