diff --git a/src/darwin_robot.cpp b/src/darwin_robot.cpp index 46401f3863d4c9f76e99d43474f9c49581487275..35df42d1c5b051f7b97a1dadc58c3c96d5af1bf3 100644 --- a/src/darwin_robot.cpp +++ b/src/darwin_robot.cpp @@ -80,8 +80,6 @@ CDarwinRobot::CDarwinRobot(const std::string &name,std::string &bus_id,int bus_s this->robot_device->read_byte_register(DARWIN_MM_NUM_SERVOS,&this->manager_num_servos); /* get the current action status */ this->robot_device->read_byte_register(DARWIN_ACTION_CNTRL,&this->action_status); - /* get the current walking status */ - this->robot_device->read_byte_register(DARWIN_WALK_CNTRL,&this->walk_status); /* get the current joints status */ for(i=0;i<JOINTS_NUM_GROUPS;i++) this->robot_device->read_byte_register(DARWIN_JOINT_GRP0_CNTRL+i*5,&this->joints_status[i]); @@ -956,7 +954,7 @@ double CDarwinRobot::walk_get_x_offset(void) if(this->robot_device!=NULL) { this->robot_device->read_byte_register(DARWIN_WALK_X_OFFSET,&offset); - return ((double)offset)/1000.0; + return ((double)((signed char)offset))/1000.0; } else throw CDarwinRobotException(_HERE_,"Invalid robot device"); @@ -982,7 +980,7 @@ double CDarwinRobot::walk_get_y_offset(void) if(this->robot_device!=NULL) { this->robot_device->read_byte_register(DARWIN_WALK_Y_OFFSET,&offset); - return ((double)offset)/1000.0; + return ((double)((signed char)offset))/1000.0; } else throw CDarwinRobotException(_HERE_,"Invalid robot device"); @@ -1008,7 +1006,7 @@ double CDarwinRobot::walk_get_z_offset(void) if(this->robot_device!=NULL) { this->robot_device->read_byte_register(DARWIN_WALK_Z_OFFSET,&offset); - return ((double)offset)/1000.0; + return ((double)((signed char)offset))/1000.0; } else throw CDarwinRobotException(_HERE_,"Invalid robot device"); @@ -1098,7 +1096,7 @@ void CDarwinRobot::walk_set_hip_pitch_offset(double offset_rad) if(this->robot_device!=NULL) { - offset=(unsigned short int)((offset_rad*180.0/PI)*8.0); + offset=(unsigned short int)((offset_rad*180.0/PI)*1024.0); this->robot_device->write_word_register(DARWIN_WALK_HIP_PITCH_OFF_L,offset); } else @@ -1112,7 +1110,7 @@ double CDarwinRobot::walk_get_hip_pitch_offset(void) if(this->robot_device!=NULL) { this->robot_device->read_word_register(DARWIN_WALK_HIP_PITCH_OFF_L,&offset); - return (((double)offset)*PI/180.0)/8.0; + return (((double)offset)*PI/180.0)/1024.0; } else throw CDarwinRobotException(_HERE_,"Invalid robot device"); @@ -1124,7 +1122,8 @@ void CDarwinRobot::walk_set_period(double period_s) if(this->robot_device!=NULL) { - period=(unsigned char)(period_s*1000.0); + period=(unsigned short int)(period_s*1000.0); + std::cout << period_s << "," << period << std::endl; this->robot_device->write_word_register(DARWIN_WALK_PERIOD_TIME_L,period); } else @@ -1320,7 +1319,7 @@ double CDarwinRobot::walk_get_arm_swing_gain(void) if(this->robot_device!=NULL) { this->robot_device->read_byte_register(DARWIN_WALK_ARM_SWING_GAIN,&gain_int); - return ((double)gain_int)*32.0; + return ((double)gain_int)/32.0; } else throw CDarwinRobotException(_HERE_,"Invalid robot device"); @@ -1381,10 +1380,7 @@ double CDarwinRobot::walk_get_rot_speed(void) void CDarwinRobot::walk_start(void) { if(this->robot_device!=NULL) - { - this->walk_status|=WALK_START; - this->robot_device->write_byte_register(DARWIN_WALK_CNTRL,this->walk_status); - } + this->robot_device->write_byte_register(DARWIN_WALK_CNTRL,WALK_START); else throw CDarwinRobotException(_HERE_,"Invalid robot device"); } @@ -1392,10 +1388,7 @@ void CDarwinRobot::walk_start(void) void CDarwinRobot::walk_stop(void) { if(this->robot_device!=NULL) - { - this->walk_status|=WALK_STOP; - this->robot_device->write_byte_register(DARWIN_WALK_CNTRL,this->walk_status); - } + this->robot_device->write_byte_register(DARWIN_WALK_CNTRL,WALK_STOP); else throw CDarwinRobotException(_HERE_,"Invalid robot device"); } diff --git a/src/darwin_robot.h b/src/darwin_robot.h index 30d3a9d168d7bf5432ab8f33b8b7060dac141cc5..80af216a06dec37eb8cc452b1768a2f608a54597 100644 --- a/src/darwin_robot.h +++ b/src/darwin_robot.h @@ -52,8 +52,6 @@ class CDarwinRobot unsigned char manager_status; /* action status */ unsigned char action_status; - /* walk status */ - unsigned char walk_status; /* joint group status */ unsigned char joints_status[JOINTS_NUM_GROUPS]; /* head tracking status */ @@ -137,7 +135,7 @@ class CDarwinRobot double walk_get_yaw_offset(void); void walk_set_hip_pitch_offset(double offset_rad); double walk_get_hip_pitch_offset(void); - void walk_set_period(double period_ms); + void walk_set_period(double period_s); double walk_get_period(void); void walk_set_ssp_dsp_ratio(double ratio); double walk_get_ssp_dsp_ratio(void);