Bladeren bron

1、油门往复测试添加起始位置到终止位置递减行进功能
2、添加OBD车辆反馈ID

limengqi 10 maanden geleden
bovenliggende
commit
0c97b2591b
3 gewijzigde bestanden met toevoegingen van 62 en 18 verwijderingen
  1. 46 17
      src/canbus/canbus.cpp
  2. 1 1
      src/canbus/canbus.h
  3. 15 0
      src/common/canmsgobdmsgid.h

+ 46 - 17
src/canbus/canbus.cpp

@@ -979,28 +979,57 @@ void Canbus::AccLoopOnTimer(const ros::TimerEvent &event)
     tAccCtrReq.uiAccPsngCtrReq = accPsng;
     MessageCoder::CanMsgPackage((void*)&tAccCtrReq, robot::common::AccPedalActCtrReq, &canAccCtrReqMsg);
     write_data(&canAccCtrReqMsg);
-    if (accPsng <= accLpReq.uiAccPsngStart)
-      accLoopNum++;
-    if(accLoopNum > accLpReq.uiAccFrequency)  //如果执行次数等于往复次数,则结束定时器
+    if(accLpReq.uiAccPsngStart < accLpReq.uiAccPsngEnd)
     {
-      acc_timer_.stop();
-      accTimerState = false;
-      accLoopNum = 1;
-      tAccCtrReq = {0};
-      return;
-    }
-    if (accIncrease)
-    {
-      accPsng += accLpReq.uiAccSpan;
-      if (accPsng >= accLpReq.uiAccPsngEnd)
-        accIncrease = false;
+      if (accPsng <= accLpReq.uiAccPsngStart)
+        accLoopNum++;
+      if(accLoopNum > accLpReq.uiAccFrequency)  //如果执行次数等于往复次数,则结束定时器
+      {
+        acc_timer_.stop();
+        accTimerState = false;
+        accLoopNum = 1;
+        tAccCtrReq = {0};
+        return;
+      }
+      if (accIncrease)
+      {
+        accPsng += accLpReq.uiAccSpan;
+        if (accPsng >= accLpReq.uiAccPsngEnd)
+          accIncrease = false;
+      }
+      else
+      {
+        accPsng -= accLpReq.uiAccSpan;
+        if (accPsng <= accLpReq.uiAccPsngStart)
+          accIncrease = true;
+      }
     }
     else
     {
-      accPsng -= accLpReq.uiAccSpan;
-      if (accPsng <= accLpReq.uiAccPsngStart)
-        accIncrease = true;
+      if (accPsng >= accLpReq.uiAccPsngStart)
+        accLoopNum++;
+      if(accLoopNum > accLpReq.uiAccFrequency)  //如果执行次数等于往复次数,则结束定时器
+      {
+        acc_timer_.stop();
+        accTimerState = false;
+        accLoopNum = 1;
+        tAccCtrReq = {0};
+        return;
+      }
+      if (accIncrease)
+      {
+        accPsng -= accLpReq.uiAccSpan;
+        if (accPsng <= accLpReq.uiAccPsngEnd)
+          accIncrease = false;
+      }
+      else
+      {
+        accPsng += accLpReq.uiAccSpan;
+        if (accPsng >= accLpReq.uiAccPsngStart)
+          accIncrease = true;
+      }
     }
+
   }
   catch (ros::Exception ex)
   {

+ 1 - 1
src/canbus/canbus.h

@@ -318,7 +318,7 @@ private:
 
    ros::Timer acc_txt_timer_;    //油门文件定时器
    bool accTxtTimerState = false;  //油门文件定时器标志位
-   int acc_psngs[69910] = {0};  //TXT文件中的位置值
+   double acc_psngs[69910] = {0};  //TXT文件中的位置值
    int acc_psng_count = 0;   //TXT文件中的位置值的编号
    int acc_psng_number = 0; //TXT文件中的位置值的数量
    T_ACC_PEDAL_ACT_CTR_REQ tAccCtrReqTxt = {0};

+ 15 - 0
src/common/canmsgobdmsgid.h

@@ -127,6 +127,21 @@ const int IOMode = 0x5FF;
 const int Car1 = 0x3F1;
 //车辆信息2
 const int Car2 = 0x3F2;
+
+//OBD实际油门踏板行程
+const int ObdAccPsng = 0x1A1;
+//OBD实际制动踏板行程
+const int ObdBrkPsng = 0x0F1;
+//OBD实际挡位
+const int ObdSftPsng = 0x135;
+//OBD车辆手刹状态
+const int ObdVehHBrkStat = 0x1F1;
+//OBD实际车辆启动状态
+const int ObdVehSwStat = 0x121;
+//OBD实际方向盘转角
+const int ObdStrAng = 0x1E5;
+//OBD实际发动机转速
+const int ObdEngSpd = 0x0C9;
 } // common
 } // robot