navigation_main.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //
  2. // Created by zx on 23-5-8.
  3. //
  4. #include "navigation_main.h"
  5. NavigationMain::NavigationMain(){
  6. move_mode_=Monitor_emqx::eSingle;
  7. wheelBase_=0;
  8. }
  9. NavigationMain::~NavigationMain(){
  10. }
  11. void NavigationMain::ResetPose(const Pose2d& pose){
  12. if(move_mode_==Monitor_emqx::eMain) {
  13. Pose2d transform(-wheelBase_/2.0,0,0);
  14. Navigation::ResetPose(pose * transform);
  15. }
  16. else
  17. Navigation::ResetPose(pose);
  18. }
  19. void NavigationMain::publish_statu(NavMessage::NavStatu& statu)
  20. {
  21. statu.set_main_agv(true);
  22. Navigation::publish_statu(statu);
  23. }
  24. void NavigationMain::HandleNavCmd(const NavMessage::NavCmd& cmd)
  25. {
  26. if(cmd.action()==4)
  27. {
  28. if(cmd.wheelbase()<2.4 || cmd.wheelbase()>3.5)
  29. {
  30. printf("Failed to Switch MoveMode --> main,wheelbase invalid :%f\n",cmd.wheelbase());
  31. return;
  32. }
  33. printf(" Switch MoveMode --> main\n");
  34. SwitchMode(Monitor_emqx::eMain,cmd.wheelbase());
  35. return ;
  36. }
  37. if(cmd.action()==5)
  38. {
  39. printf(" Switch MoveMode --> single\n");
  40. SwitchMode(Monitor_emqx::eSingle,0);
  41. return ;
  42. }
  43. else
  44. {
  45. Navigation::HandleNavCmd(cmd);
  46. }
  47. }
  48. bool NavigationMain::Start(const NavMessage::NavCmd& cmd)
  49. {
  50. /*if(move_mode_!=Monitor_emqx::eMain)
  51. {
  52. printf(" navigation mode must set main,parameter:Pose2d\n");
  53. return false;
  54. }*/
  55. return Navigation::Start(cmd);
  56. }
  57. void NavigationMain::SendMoveCmd(Monitor_emqx::MoveMode mode,Monitor_emqx::SpeedType type,
  58. double v,double angular)
  59. {
  60. if(monitor_)
  61. {
  62. monitor_->set_speed(mode,type,v,angular,wheelBase_);
  63. }
  64. }