@@ -381,6 +381,8 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
381381 nh.getParam (" wheel_speed_16" , wheel_speed_16_);
382382 nh.getParam (" wheel_speed_18" , wheel_speed_18_);
383383 nh.getParam (" wheel_speed_30" , wheel_speed_30_);
384+ nh.param (" wheel_speed_offset_front" , wheel_speed_offset_front_, 0.0 );
385+ nh.param (" wheel_speed_offset_back" , wheel_speed_offset_back_, 0.0 );
384386 nh.param (" speed_oscillation" , speed_oscillation_, 1.0 );
385387 nh.param (" extra_wheel_speed_once" , extra_wheel_speed_once_, 0 .);
386388 nh.param (" deploy_wheel_speed" , deploy_wheel_speed_, 410.0 );
@@ -484,6 +486,8 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
484486 void sendCommand (const ros::Time& time) override
485487 {
486488 msg_.wheel_speed = getWheelSpeedDes ();
489+ msg_.wheels_speed_offset_front = getFrontWheelSpeedOffset ();
490+ msg_.wheels_speed_offset_back = getBackWheelSpeedOffset ();
487491 msg_.hz = heat_limit_->getShootFrequency ();
488492 TimeStampCommandSenderBase<rm_msgs::ShootCmd>::sendCommand (time);
489493 }
@@ -495,16 +499,22 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
495499 double getWheelSpeedDes ()
496500 {
497501 setSpeedDesAndWheelSpeedDes ();
498- if (deploy_flag_ )
502+ if (hero_flag_ )
499503 {
500- return deploy_wheel_speed_ + total_extra_wheel_speed_;
504+ if (deploy_flag_)
505+ return deploy_wheel_speed_;
506+ return wheel_speed_des_;
501507 }
502508 return wheel_speed_des_ + total_extra_wheel_speed_;
503509 }
504510 void setDeployState (bool flag)
505511 {
506512 deploy_flag_ = flag;
507513 }
514+ void setHeroState (bool flag)
515+ {
516+ hero_flag_ = flag;
517+ }
508518 bool getDeployState ()
509519 {
510520 return deploy_flag_;
@@ -550,13 +560,29 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
550560 }
551561 }
552562 }
563+ double getFrontWheelSpeedOffset ()
564+ {
565+ wheels_speed_offset_front_ = wheel_speed_offset_front_;
566+ return wheels_speed_offset_front_;
567+ }
568+ double getBackWheelSpeedOffset ()
569+ {
570+ wheels_speed_offset_back_ = wheel_speed_offset_back_;
571+ return wheels_speed_offset_back_;
572+ }
553573 void dropSpeed ()
554574 {
555- total_extra_wheel_speed_ -= extra_wheel_speed_once_;
575+ if (hero_flag_)
576+ wheel_speed_offset_front_ -= extra_wheel_speed_once_;
577+ else
578+ total_extra_wheel_speed_ -= extra_wheel_speed_once_;
556579 }
557580 void raiseSpeed ()
558581 {
559- total_extra_wheel_speed_ += extra_wheel_speed_once_;
582+ if (hero_flag_)
583+ wheel_speed_offset_front_ += extra_wheel_speed_once_;
584+ else
585+ total_extra_wheel_speed_ += extra_wheel_speed_once_;
560586 }
561587 void setArmorType (uint8_t armor_type)
562588 {
@@ -577,6 +603,8 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
577603 double speed_10_{}, speed_15_{}, speed_16_{}, speed_18_{}, speed_30_{}, speed_des_{}, speed_limit_{};
578604 double wheel_speed_10_{}, wheel_speed_15_{}, wheel_speed_16_{}, wheel_speed_18_{}, wheel_speed_30_{},
579605 wheel_speed_des_{}, last_bullet_speed_{}, speed_oscillation_{};
606+ double wheel_speed_offset_front_{}, wheel_speed_offset_back_{};
607+ double wheels_speed_offset_front_{}, wheels_speed_offset_back_{};
580608 double track_armor_error_tolerance_{};
581609 double track_buff_error_tolerance_{};
582610 double untrack_armor_error_tolerance_{};
@@ -586,6 +614,7 @@ class ShooterCommandSender : public TimeStampCommandSenderBase<rm_msgs::ShootCmd
586614 double total_extra_wheel_speed_{};
587615 double deploy_wheel_speed_{};
588616 bool auto_wheel_speed_ = false ;
617+ bool hero_flag_{};
589618 bool deploy_flag_ = false ;
590619 rm_msgs::TrackData track_data_;
591620 rm_msgs::GimbalDesError gimbal_des_error_;
0 commit comments