@ -18,7 +18,7 @@
# define POSE_IDX META_IDX + OTHER_META_SIZE + DESIRE_PRED_SIZE
# define POSE_IDX META_IDX + OTHER_META_SIZE + DESIRE_PRED_SIZE
# define OUTPUT_SIZE POSE_IDX + POSE_SIZE
# define OUTPUT_SIZE POSE_IDX + POSE_SIZE
# ifdef TEMPORAL
# ifdef TEMPORAL
# define TEMPORAL_SIZE 5 12
# define TEMPORAL_SIZE 10 24
# else
# else
# define TEMPORAL_SIZE 0
# define TEMPORAL_SIZE 0
# endif
# endif
@ -42,11 +42,17 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context, int t
# endif
# endif
# ifdef DESIRE
# ifdef DESIRE
s - > desire = ( float * ) malloc ( DESIRE_SIZE * sizeof ( float ) ) ;
s - > prev_desire = ( float * ) malloc ( DESIRE_LEN * sizeof ( float ) ) ;
for ( int i = 0 ; i < DESIRE_SIZE ; i + + ) s - > desire [ i ] = 0.0 ;
for ( int i = 0 ; i < DESIRE_LEN ; i + + ) s - > prev_desire [ i ] = 0.0 ;
s - > pulse_desire = ( float * ) malloc ( DESIRE_SIZE * sizeof ( float ) ) ;
s - > pulse_desire = ( float * ) malloc ( DESIRE_LEN * sizeof ( float ) ) ;
for ( int i = 0 ; i < DESIRE_SIZE ; i + + ) s - > pulse_desire [ i ] = 0.0 ;
for ( int i = 0 ; i < DESIRE_LEN ; i + + ) s - > pulse_desire [ i ] = 0.0 ;
s - > m - > addDesire ( s - > pulse_desire , DESIRE_SIZE ) ;
s - > m - > addDesire ( s - > pulse_desire , DESIRE_LEN ) ;
# endif
# ifdef TRAFFIC_CONVENTION
s - > traffic_convention = ( float * ) malloc ( TRAFFIC_CONVENTION_LEN * sizeof ( float ) ) ;
for ( int i = 0 ; i < TRAFFIC_CONVENTION_LEN ; i + + ) s - > traffic_convention [ i ] = 0.0 ;
s - > m - > addTrafficConvention ( s - > traffic_convention , TRAFFIC_CONVENTION_LEN ) ;
# endif
# endif
// Build Vandermonde matrix
// Build Vandermonde matrix
@ -61,18 +67,27 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context, int t
ModelDataRaw model_eval_frame ( ModelState * s , cl_command_queue q ,
ModelDataRaw model_eval_frame ( ModelState * s , cl_command_queue q ,
cl_mem yuv_cl , int width , int height ,
cl_mem yuv_cl , int width , int height ,
mat3 transform , void * sock , float * desire_in ) {
mat3 transform , void * sock ,
float * desire_in , float * traffic_convention_in ) {
# ifdef DESIRE
# ifdef DESIRE
if ( desire_in ! = NULL ) {
if ( desire_in ! = NULL ) {
for ( int i = 0 ; i < DESIRE_SIZE ; i + + ) {
for ( int i = 0 ; i < DESIRE_LEN ; i + + ) {
// Model decides when action is completed
// Model decides when action is completed
// so desire input is just a pulse triggered on rising edge
// so desire input is just a pulse triggered on rising edge
if ( desire_in [ i ] - s - > desire [ i ] = = 1 ) {
if ( desire_in [ i ] - s - > prev_ desire[ i ] > .99 ) {
s - > pulse_desire [ i ] = desire_in [ i ] ;
s - > pulse_desire [ i ] = desire_in [ i ] ;
} else {
} else {
s - > pulse_desire [ i ] = 0.0 ;
s - > pulse_desire [ i ] = 0.0 ;
}
}
s - > desire [ i ] = desire_in [ i ] ;
s - > prev_desire [ i ] = desire_in [ i ] ;
}
}
# endif
# ifdef TRAFFIC_CONVENTION
if ( traffic_convention_in ! = NULL ) {
for ( int i = 0 ; i < TRAFFIC_CONVENTION_LEN ; i + + ) {
s - > traffic_convention [ i ] = traffic_convention_in [ i ] ;
}
}
}
}
# endif
# endif