|
@@ -15,6 +15,7 @@
|
|
|
#include "gpsimu.pb.h"
|
|
|
#include "ndtgpspos.pb.h"
|
|
|
#include "fusiongpslidar.pb.h"
|
|
|
+#include "chassis.pb.h"
|
|
|
|
|
|
#include "ivbacktrace.h"
|
|
|
#include "ivfault.h"
|
|
@@ -49,7 +50,7 @@ QMutex mMutexgps;
|
|
|
QMutex mMutexndt;
|
|
|
|
|
|
|
|
|
-void * gpa,* gpb, * gpc, * gpd;
|
|
|
+void * gpa,* gpb, * gpc, * gpd,* gpe;
|
|
|
|
|
|
std::string gstrgpsmsg;
|
|
|
std::string gstrndtmsg;
|
|
@@ -63,6 +64,33 @@ QUdpSocket * gudpSocketGPSIMU;
|
|
|
|
|
|
|
|
|
|
|
|
+static int64_t glastchassitime = 0;
|
|
|
+static double gfChassisVelSpeed;
|
|
|
+
|
|
|
+
|
|
|
+void UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)
|
|
|
+{
|
|
|
+ (void)index;
|
|
|
+ (void)dt;
|
|
|
+ (void)strmemname;
|
|
|
+ iv::chassis xchassis;
|
|
|
+ // static int ncount = 0;
|
|
|
+ if(!xchassis.ParseFromArray(strdata,nSize))
|
|
|
+ {
|
|
|
+ std::cout<<"iv::decition::BrainDecition::UpdateChassis ParseFrom Array Error."<<std::endl;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(xchassis.has_vel())
|
|
|
+ {
|
|
|
+ gfChassisVelSpeed = xchassis.vel();
|
|
|
+ glastchassitime = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
|
|
|
+ // std::cout<<" gf Veh speed : "<<gfVehSpd<<std::endl;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
void ListenRaw(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
{
|
|
|
static unsigned int nFixCount = 0;
|
|
@@ -179,9 +207,18 @@ static void sharefusiongpsimu(iv::fusion::fusiongpslidar * pfusiongpslidar)
|
|
|
gpsimu.set_roll(pfusiongpslidar->roll());
|
|
|
gpsimu.set_pitch(pfusiongpslidar->pitch());
|
|
|
|
|
|
+
|
|
|
gpsimu.set_rtk_state(pfusiongpslidar->state());
|
|
|
gpsimu.set_ins_state(4);
|
|
|
|
|
|
+ int64_t nmsnow = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
|
|
|
+ if(abs(nmsnow - glastchassitime) < 1000)
|
|
|
+ {
|
|
|
+ gpsimu.set_speed(gfChassisVelSpeed);
|
|
|
+ std::cout<<"use chassis speed."<<std::endl;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
char * strser;
|
|
|
bool bser;
|
|
|
int nbytesize;
|
|
@@ -433,10 +470,10 @@ int main(int argc, char *argv[])
|
|
|
gfault->SetFaultState(0,0,"Initialize.");
|
|
|
|
|
|
gstrfusionmsg = xparam.GetParam("fusionmsg","fusion_gpslidar");
|
|
|
- gstrgpsmsg = xparam.GetParam("gpsmsg","hcp1_gpsimu");
|
|
|
+ gstrgpsmsg = xparam.GetParam("gpsmsg","hcp2_gpsimu");
|
|
|
gstrndtmsg = xparam.GetParam("ndtgpsposmsg","ndtgpspos");
|
|
|
gstrlidaronly = xparam.GetParam("LidarOnly","false");
|
|
|
- gstrfusiongpsimumsg = xparam.GetParam("fusiongpsimumsg","hcp2_gpsimu");
|
|
|
+ gstrfusiongpsimumsg = xparam.GetParam("fusiongpsimumsg","fusion_gpsimu");
|
|
|
gstrshareudp = xparam.GetParam("shareudp","true");
|
|
|
gstrsharegpsimu = xparam.GetParam("sharegpsimu","true");
|
|
|
|
|
@@ -459,6 +496,7 @@ int main(int argc, char *argv[])
|
|
|
gpa = iv::modulecomm::RegisterRecv(gstrgpsmsg.data(),ListenRaw);
|
|
|
gpb = iv::modulecomm::RegisterRecv(gstrndtmsg.data(),ListenNDTGPS);
|
|
|
gpd = iv::modulecomm::RegisterSend(gstrfusiongpsimumsg.data(),10000,1);
|
|
|
+ gpe = iv::modulecomm::RegisterRecv("chassis",UpdateChassis);
|
|
|
|
|
|
|
|
|
std::cout<<"start fusion_gpsndt"<<std::endl;
|