Merge pull request #27 from mikehamer/master
Now only loads the writeable subset of drone parameters
Esse commit está contido em:
+1
-1
@@ -88,7 +88,7 @@ Information received from the drone will be published to the `ardrone/navdata` t
|
||||
* `altd`: Estimated altitude (mm)
|
||||
* `vx`, `vy`, `vz`: Linear velocity (mm/s) [TBA: Convention]
|
||||
* `ax`, `ay`, `az`: Linear acceleration (g) [TBA: Convention]
|
||||
* `tm`: Timestamp of the data returned by the Drone
|
||||
* `tm`: Timestamp of the data returned by the Drone returned as a packed uint32 (sec:11; usec:21)
|
||||
|
||||
### IMU data
|
||||
|
||||
|
||||
+10
-11
@@ -5,23 +5,22 @@
|
||||
<param name="max_bitrate" value="4000" />
|
||||
<param name="bitrate" value="4000" />
|
||||
<param name="navdata_demo" value="0" />
|
||||
<param name="flight_without_shell" value="1" />
|
||||
<param name="altitude_max" value="4000" />
|
||||
<param name="altitude_min" value="150" />
|
||||
<param name="euler_angle_max" value="0.5" />
|
||||
<param name="control_vz_max" value="2000" />
|
||||
<param name="control_yaw" value="350" />
|
||||
<param name="flight_without_shell" value="0" />
|
||||
<param name="altitude_max" value="3000" />
|
||||
<param name="altitude_min" value="50" />
|
||||
<param name="euler_angle_max" value="0.21" />
|
||||
<param name="control_vz_max" value="700" />
|
||||
<param name="control_yaw" value="1.75" />
|
||||
<param name="detect_type" value="10" />
|
||||
<param name="enemy_colors" value="3" />
|
||||
<param name="groundstripe_colors" value="8" />
|
||||
<param name="detections_select_h" value="32" />
|
||||
<param name="detections_select_v_hsync" value="128" />
|
||||
<param name="enemy_without_shell" value="0" />
|
||||
<param name="do_imu_caliberation" value="false" />
|
||||
<param name="tf_prefix" value="mydrone" />
|
||||
<!-- Covariance Values (3x3 matrices reshaped to 1x9)-->
|
||||
<rosparam param="cov/imu_la">[0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1]</rosparam>
|
||||
<rosparam param="cov/imu_av">[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]</rosparam>
|
||||
<rosparam param="cov/imu_or">[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 100000.0]</rosparam>
|
||||
<!-- Covariance Values (3x3 matrices reshaped to 1x9)-->
|
||||
<rosparam param="cov/imu_la">[0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1]</rosparam>
|
||||
<rosparam param="cov/imu_av">[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]</rosparam>
|
||||
<rosparam param="cov/imu_or">[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 100000.0]</rosparam>
|
||||
</node>
|
||||
</launch>
|
||||
|
||||
@@ -195,8 +195,8 @@ void ARDroneDriver::configureDrone()
|
||||
|
||||
// firstly we send the CAT_COMMON parameters, for example outdoor, as these settings can affect where the other parameters are stored
|
||||
#define ARDRONE_CONFIG_KEY_REF_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) //do nothing for reference-only parameters
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY==CAT_COMMON) SEND_PARAM_NUM(NAME,CATEGORY,DEFAULT) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY==CAT_COMMON) SEND_PARAM_STR(NAME,CATEGORY,DEFAULT) }
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY==CAT_COMMON && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) SEND_PARAM_NUM(NAME,CATEGORY,DEFAULT) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY==CAT_COMMON && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) SEND_PARAM_STR(NAME,CATEGORY,DEFAULT) }
|
||||
|
||||
#include <config_keys.h> // include the parameter definitions, which will be replaced by the above
|
||||
|
||||
@@ -205,8 +205,8 @@ void ARDroneDriver::configureDrone()
|
||||
|
||||
// then we send the rest of the parameters. The problem is if we send euler_angle_max (for example) before sending outdoor, it will get written to the wrong parameter
|
||||
// (indoor_ not outdoor_euler_angle_max) and then will be overwritten by the default when changing state from indoor to outdoor, so we need to send common parameters first.
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY!=CAT_COMMON) SEND_PARAM_NUM(NAME,CATEGORY,DEFAULT) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY!=CAT_COMMON) SEND_PARAM_STR(NAME,CATEGORY,DEFAULT) }
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY!=CAT_COMMON && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) SEND_PARAM_NUM(NAME,CATEGORY,DEFAULT) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && CATEGORY!=CAT_COMMON && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) SEND_PARAM_STR(NAME,CATEGORY,DEFAULT) }
|
||||
|
||||
#include <config_keys.h> // include the parameter definitions, which will be replaced by the above
|
||||
|
||||
|
||||
+12
-8
@@ -89,28 +89,32 @@ extern "C" {
|
||||
#undef LOAD_PARAM_STR
|
||||
#undef LOAD_PARAM_NUM
|
||||
|
||||
#define LOAD_PARAM_NUM(NAME,C_TYPE) \
|
||||
{ double param; \
|
||||
#define LOAD_PARAM_NUM(NAME,C_TYPE,DEFAULT) \
|
||||
{ \
|
||||
double param; \
|
||||
ROS_DEBUG("CHECK: "#NAME); \
|
||||
if(ros::param::get("~"#NAME,param)) \
|
||||
{ \
|
||||
ardrone_application_default_config.NAME = (C_TYPE)param; \
|
||||
ROS_DEBUG("SET: "#NAME" = %f", (float)ardrone_application_default_config.NAME); \
|
||||
ROS_DEBUG("SET: "#NAME" = %f (DEFAULT = %f)", (float)ardrone_application_default_config.NAME, (float)DEFAULT); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define LOAD_PARAM_STR(NAME) \
|
||||
{ std::string param; \
|
||||
#define LOAD_PARAM_STR(NAME,DEFAULT) \
|
||||
{ \
|
||||
std::string param; \
|
||||
ROS_DEBUG("CHECK: "#NAME); \
|
||||
if(ros::param::get("~"#NAME,param)) \
|
||||
{ \
|
||||
param = param.substr(0,STRING_T_SIZE-1); \
|
||||
strcpy(ardrone_application_default_config.NAME , param.c_str()); \
|
||||
ROS_DEBUG("SET: "#NAME" = %s", ardrone_application_default_config.NAME); \
|
||||
ROS_DEBUG("SET: "#NAME" = %s (DEFAULT = %s)", ardrone_application_default_config.NAME, DEFAULT); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define ARDRONE_CONFIG_KEY_REF_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) //do nothing for reference-only parameters
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom")) LOAD_PARAM_NUM(NAME,C_TYPE) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom")) LOAD_PARAM_STR(NAME) }
|
||||
#define ARDRONE_CONFIG_KEY_IMM_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) LOAD_PARAM_NUM(NAME,C_TYPE, DEFAULT) } // parameters under the custom key are for control of application/user/session, we don't want to change these!
|
||||
#define ARDRONE_CONFIG_KEY_STR_a10(KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK, CATEGORY) { if(0!=strcmp(KEY,"custom") && ((RW & K_WRITE) != 0 || (RW_CUSTOM & K_WRITE) != 0)) LOAD_PARAM_STR(NAME, DEFAULT) }
|
||||
|
||||
#include <config_keys.h> // include the parameter definitions, which will be replaced by the above
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário