diff --git a/include/arm_control.h b/include/arm_control.h index 88967949cc8c0436f41ba666624e744075f617c5..dddc26cd2d6d04b7b65b618c8366eb948cf87e11 100644 --- a/include/arm_control.h +++ b/include/arm_control.h @@ -48,7 +48,8 @@ class CArmControl void move(unsigned int axis_id,double torque); void stop(void); // stored poses - void set_poses_max_speed(double max); + void increase_max_speed(void); + void decrease_max_speed(void); void load_poses(const std::string &filename); void save_poses(const std::string &filename); void update_pose(unsigned int pose_id); diff --git a/src/arm_control.cpp b/src/arm_control.cpp index b52c5611143afbeba89a5d1040c9a3a176b48bcf..67adc4cbaa4ce109f7e0a7ed6d3237198d66446f 100644 --- a/src/arm_control.cpp +++ b/src/arm_control.cpp @@ -19,6 +19,12 @@ void button_callback(void *param,unsigned int button_id,bool level) try{ switch(button_id) { + case 4: if(level) + arm->increase_max_speed(); + break; + case 6: if(level) + arm->decrease_max_speed(); + break; case 8: if(level) arm->enable_torque(false); else @@ -126,6 +132,8 @@ CArmControl::CArmControl(const std::string &joy_device,std::string &dyn_serial, for(unsigned int i=0;i<this->joy.get_num_buttons();i++) this->current_button_state[i]=this->joy.get_button_state(i); // assign callbacks + this->joy.enable_button_callback(4,button_callback,this); + this->joy.enable_button_callback(6,button_callback,this); this->joy.enable_button_callback(8,button_callback,this); this->joy.enable_button_callback(10,button_callback,this); this->joy.enable_button_callback(12,button_callback,this); @@ -345,13 +353,20 @@ void CArmControl::stop(void) this->motors[ROLL]->move_absolute_angle(pos,50.0); } -void CArmControl::set_poses_max_speed(double max) +void CArmControl::increase_max_speed(void) { - if(max>100.0) - max=0.0; - else if(max<10.0) - max=10.0; - this->max_speed=max; + this->max_speed+=10.0; + if(this->max_speed>100.0) + this->max_speed=100.0; + std::cout << "speed: " << this->max_speed << std::endl; +} + +void CArmControl::decrease_max_speed(void) +{ + this->max_speed-=10.0; + if(this->max_speed<10.0) + this->max_speed=10.0; + std::cout << "speed: " << this->max_speed << std::endl; } void CArmControl::load_poses(const std::string &filename) diff --git a/src/examples/arm_control_test.cpp b/src/examples/arm_control_test.cpp index a39d31dfd0c4562def1a873b5c19630f901c60c4..91ab9ed7d6d4126fca81db7055b6e6583baff8d2 100644 --- a/src/examples/arm_control_test.cpp +++ b/src/examples/arm_control_test.cpp @@ -11,7 +11,6 @@ int main(int argc, char *argv[]) CArmControl arm(joy_device,dyn_serial,1000000,6,5,4); arm.load_poses("/home/sergi/Downloads/arm_control/src/xml/poses.xml"); - arm.set_poses_max_speed(50.0); arm.set_max_angles(PAN,90.0,-90.0); arm.set_max_angles(TILT,90.0,-90.0); arm.set_max_angles(ROLL,90.0,-90.0);