Browse Source

change tool/map_lanetoxodr. In ObjectSignal, add cornerRoad and cornerLocal.

yuchuli 3 năm trước cách đây
mục cha
commit
04fd16e690

+ 274 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.cpp

@@ -2,6 +2,149 @@
 
 #include <iostream>
 
+Object_outlines_outline_cornerLocal::Object_outlines_outline_cornerLocal(double u,
+                                                                         double v,double z,double height)
+{
+    mu = u;
+    mv = v;
+    mz = z;
+    mheight = height;
+}
+
+double Object_outlines_outline_cornerLocal::Getu()
+{
+    return mu;
+}
+
+double Object_outlines_outline_cornerLocal::Getv()
+{
+    return mv;
+}
+
+double Object_outlines_outline_cornerLocal::Getz()
+{
+    return mz;
+}
+
+double Object_outlines_outline_cornerLocal::Getheight()
+{
+    return mheight;
+}
+
+int Object_outlines_outline_cornerLocal::Getid(int & id)
+{
+    if(mvectorid.size() == 0)return 0;
+    id = mvectorid[0];
+    return 1;
+}
+
+
+void Object_outlines_outline_cornerLocal::Setu(double u)
+{
+    mu = u;
+}
+
+void Object_outlines_outline_cornerLocal::Setv(double v)
+{
+    mv = v;
+}
+
+void Object_outlines_outline_cornerLocal::Setz(double z)
+{
+    mz = z;
+}
+
+void Object_outlines_outline_cornerLocal::Setheight(double height)
+{
+    mheight = height;
+}
+
+void Object_outlines_outline_cornerLocal::Setid(int id)
+{
+    if(mvectorid.size() > 0)mvectorid.clear();
+    mvectorid.push_back(id);
+}
+
+void Object_outlines_outline_cornerLocal::Clearid()
+{
+    if(mvectorid.size() > 0)mvectorid.clear();
+}
+
+
+Object_outlines_outline_cornerRoad::Object_outlines_outline_cornerRoad(double s,
+                                                                       double t,double dz,double height)
+{
+    ms = s;
+    mt = t;
+    mdz = dz;
+    mheight = height;
+}
+
+double Object_outlines_outline_cornerRoad::Gets()
+{
+    return ms;
+}
+
+double Object_outlines_outline_cornerRoad::Gett()
+{
+    return mt;
+}
+
+double Object_outlines_outline_cornerRoad::Getdz()
+{
+    return mdz;
+}
+
+double Object_outlines_outline_cornerRoad::Getheight()
+{
+    return mheight;
+}
+
+int Object_outlines_outline_cornerRoad::Getid(int & id)
+{
+    if(mvectorid.size() == 0)return 0;
+    id = mvectorid[0];
+    return 1;
+}
+
+void Object_outlines_outline_cornerRoad::Sets(double s)
+{
+    ms = s;
+}
+
+void Object_outlines_outline_cornerRoad::Sett(double t)
+{
+    mt = t;
+}
+
+void Object_outlines_outline_cornerRoad::Setdz(double dz)
+{
+    mdz = dz;
+}
+
+void Object_outlines_outline_cornerRoad::Setheight(double height)
+{
+    mheight = height;
+}
+
+void Object_outlines_outline_cornerRoad::Setid(int id)
+{
+    if(mvectorid.size() > 0)mvectorid.clear();
+    mvectorid.push_back(id);
+}
+
+void Object_outlines_outline_cornerRoad::Clearid()
+{
+    if(mvectorid.size() > 0)mvectorid.clear();
+}
+
+bool Object_outlines_outline_cornerRoad::CheckInterval(double s_check)
+{
+    if (s_check>=ms)
+        return true;
+    else
+        return false;
+}
 
 Object_outlines_outline::Object_outlines_outline()
 {
@@ -99,6 +242,136 @@ void Object_outlines_outline::ClearlaneType()
     if(mlaneType.size() > 0)mlaneType.clear();
 }
 
+vector<Object_outlines_outline_cornerRoad> * Object_outlines_outline::GetcornerRoadVector()
+{
+    return &mcornerRoad;
+}
+
+Object_outlines_outline_cornerRoad* Object_outlines_outline::GetcornerRoad(unsigned int i)
+{
+    if ((mcornerRoad.size()>0)&&(i<(mcornerRoad.size())))
+        return &(mcornerRoad.at(i));
+    else
+        return NULL;
+}
+
+unsigned int Object_outlines_outline::GetcornerRoadCount()
+{
+    return mcornerRoad.size();
+}
+
+Object_outlines_outline_cornerRoad*			Object_outlines_outline::GetLastcornerRoad()
+{
+    if (mcornerRoad.size()>0)
+        return &mcornerRoad.at(mcornerRoad.size()-1);
+    else
+        return NULL;
+}
+
+Object_outlines_outline_cornerRoad*			Object_outlines_outline::GetLastAddedcornerRoad()
+{
+    if(mnLastAddedcornerRoad<mcornerRoad.size())
+        return &mcornerRoad.at(mnLastAddedcornerRoad);
+    else
+        return NULL;
+}
+
+unsigned int Object_outlines_outline::AddcornerRoad(double s,double t,double dz,double height)
+{
+    unsigned int index = CheckcornerRoadInterval(s)+1;
+    mcornerRoad.push_back(Object_outlines_outline_cornerRoad(s,t,dz,height));
+    mnLastAddedcornerRoad = index;
+    return index;
+}
+
+unsigned int Object_outlines_outline::ClonecornerRoad(unsigned int index)
+{
+    if(index<(mcornerRoad.size()-1))
+        mcornerRoad.insert(mcornerRoad.begin()+index+1, mcornerRoad[index]);
+    else if(index==mcornerRoad.size()-1)
+        mcornerRoad.push_back(mcornerRoad[index]);
+    mnLastAddedcornerRoad=index+1;
+    return mnLastAddedcornerRoad;
+}
+
+void Object_outlines_outline::DeletecornerRoad(unsigned int index)
+{
+    mcornerRoad.erase(mcornerRoad.begin()+index);
+}
+
+int Object_outlines_outline::CheckcornerRoadInterval(double s_check)
+{
+    int res=-1;
+    //Go through all the lane section records
+    for (unsigned int i=0;i<mcornerRoad.size();i++)
+    {
+        //check if the s_check belongs to the current record
+        if (mcornerRoad.at(i).CheckInterval(s_check))
+            res=i;	//assign it to the result id
+        else
+            break;	//if not, break;
+    }
+    return res;		//return the result: 0 to MaxInt as the index to the record containing s_check or -1 if nothing found
+
+}
+
+vector<Object_outlines_outline_cornerLocal> * Object_outlines_outline::GetcornerLocalVector()
+{
+    return &mcornerLocal;
+}
+
+Object_outlines_outline_cornerLocal* Object_outlines_outline::GetcornerLocal(unsigned int i)
+{
+    if ((mcornerLocal.size()>0)&&(i<(mcornerLocal.size())))
+        return &(mcornerLocal.at(i));
+    else
+        return NULL;
+}
+
+unsigned int Object_outlines_outline::GetcornerLocalCount()
+{
+    return mcornerLocal.size();
+}
+
+Object_outlines_outline_cornerLocal*			Object_outlines_outline::GetLastcornerLocal()
+{
+    if (mcornerLocal.size()>0)
+        return &mcornerLocal.at(mcornerLocal.size()-1);
+    else
+        return NULL;
+}
+
+Object_outlines_outline_cornerLocal*			Object_outlines_outline::GetLastAddedcornerLocal()
+{
+    if(mnLastAddedcornerLocal<mcornerLocal.size())
+        return &mcornerLocal.at(mnLastAddedcornerLocal);
+    else
+        return NULL;
+}
+
+unsigned int Object_outlines_outline::AddcornerLocal(double u,double v,double z,double height)
+{
+    unsigned int index = mcornerLocal.size();
+    mcornerLocal.push_back(Object_outlines_outline_cornerLocal(u,v,z,height));
+    mnLastAddedcornerLocal = index;
+    return index;
+}
+
+unsigned int Object_outlines_outline::ClonecornerLocal(unsigned int index)
+{
+    if(index<(mcornerLocal.size()-1))
+        mcornerLocal.insert(mcornerLocal.begin()+index+1, mcornerLocal[index]);
+    else if(index==mcornerLocal.size()-1)
+        mcornerLocal.push_back(mcornerLocal[index]);
+    mnLastAddedcornerLocal=index+1;
+    return mnLastAddedcornerLocal;
+}
+
+void Object_outlines_outline::DeletecornerLocal(unsigned int index)
+{
+    mcornerLocal.erase(mcornerLocal.begin()+index);
+}
+
 Object_outlines::Object_outlines()
 {
 
@@ -752,6 +1025,7 @@ void Object::DeleteObjectrepeat(unsigned int index)
     mObject_repeat.erase(mObject_repeat.begin()+index);
 }
 
+
 int Object::CheckObjectrepeatInterval(double s_check)
 {
     int res=-1;

+ 82 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.h

@@ -7,6 +7,65 @@
 using std::vector;
 using std::string;
 
+
+class Object_outlines_outline_cornerLocal
+{
+private:
+    double mu;
+    double mv;
+    double mz;
+    double mheight;
+    std::vector<int> mvectorid;
+
+public:
+    Object_outlines_outline_cornerLocal(double u,double v,double z,double height);
+
+public:
+    double Getu();
+    double Getv();
+    double Getz();
+    double Getheight();
+    int Getid(int & id);
+
+    void Setu(double u);
+    void Setv(double v);
+    void Setz(double z);
+    void Setheight(double height);
+    void Setid(int id);
+
+    void Clearid();
+
+};
+
+class Object_outlines_outline_cornerRoad
+{
+private:
+    double ms;
+    double mt;
+    double mdz;
+    double mheight;
+    std::vector<int> mvectorid;
+public:
+    Object_outlines_outline_cornerRoad(double s,double t,double dz,double height);
+
+public:
+    double Gets();
+    double Gett();
+    double Getdz();
+    double Getheight();
+    int Getid(int & id);
+
+    void Sets(double s);
+    void Sett(double t);
+    void Setdz(double dz);
+    void Setheight(double height);
+    void Setid(int id);
+
+    void Clearid();
+
+    bool CheckInterval(double s_check);
+};
+
 class Object_outlines_outline
 {
 private:
@@ -15,6 +74,10 @@ private:
     vector<bool> mouter;
     vector<bool> mclosed;
     vector<string> mlaneType;
+    vector<Object_outlines_outline_cornerRoad> mcornerRoad;
+    vector<Object_outlines_outline_cornerLocal> mcornerLocal;
+    unsigned int mnLastAddedcornerRoad;
+    unsigned int mnLastAddedcornerLocal;
 public:
     Object_outlines_outline();
 
@@ -37,6 +100,25 @@ public:
     void Clearclosed();
     void ClearlaneType();
 
+    vector<Object_outlines_outline_cornerRoad> * GetcornerRoadVector();
+    Object_outlines_outline_cornerRoad* GetcornerRoad(unsigned int i);
+    unsigned int GetcornerRoadCount();
+    Object_outlines_outline_cornerRoad*			GetLastcornerRoad();
+    Object_outlines_outline_cornerRoad*			GetLastAddedcornerRoad();
+    unsigned int AddcornerRoad(double s,double t,double dz,double height);
+    unsigned int ClonecornerRoad(unsigned int index);
+    void DeletecornerRoad(unsigned int index);
+    int CheckcornerRoadInterval(double s_check);
+
+    vector<Object_outlines_outline_cornerLocal> * GetcornerLocalVector();
+    Object_outlines_outline_cornerLocal* GetcornerLocal(unsigned int i);
+    unsigned int GetcornerLocalCount();
+    Object_outlines_outline_cornerLocal*			GetLastcornerLocal();
+    Object_outlines_outline_cornerLocal*			GetLastAddedcornerLocal();
+    unsigned int AddcornerLocal(double u,double v,double z,double height);
+    unsigned int ClonecornerLocal(unsigned int index);
+    void DeletecornerLocal(unsigned int index);
+
 
 };
 

+ 61 - 0
src/controller/apollo_conf_make/apollo_conf_make.pro

@@ -16,6 +16,62 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 SOURCES += \
+        ../../../thirdpartylib/apollo/cyber/binary.cc \
+        ../../../thirdpartylib/apollo/cyber/common/file.cc \
+        ../../../thirdpartylib/apollo/modules/canbus/proto/chassis.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/configs/proto/vehicle_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/drive_state.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/error_code.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/geometry.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/header.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/pnc_point.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/proto/vehicle_signal.pb.cc \
+        ../../../thirdpartylib/apollo/modules/common/vehicle_state/proto/vehicle_state.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/calibration_table.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/control_cmd.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/control_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/gain_scheduler_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/input_debug.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/lat_controller_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/leadlag_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/lon_controller_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/mpc_controller_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/mrac_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/pad_msg.pb.cc \
+        ../../../thirdpartylib/apollo/modules/control/proto/pid_conf.pb.cc \
+        ../../../thirdpartylib/apollo/modules/dreamview/proto/chart.pb.cc \
+        ../../../thirdpartylib/apollo/modules/localization/proto/localization.pb.cc \
+        ../../../thirdpartylib/apollo/modules/localization/proto/localization_status.pb.cc \
+        ../../../thirdpartylib/apollo/modules/localization/proto/pose.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_clear_area.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_crosswalk.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_geometry.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_id.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_junction.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_lane.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_overlap.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_parking_space.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_pnc_junction.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_road.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_rsu.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_signal.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_speed_bump.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_stop_sign.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/proto/map_yield_sign.pb.cc \
+        ../../../thirdpartylib/apollo/modules/map/relative_map/proto/navigation.pb.cc \
+        ../../../thirdpartylib/apollo/modules/perception/proto/perception_obstacle.pb.cc \
+        ../../../thirdpartylib/apollo/modules/perception/proto/traffic_light_detection.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/decision.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/math/fem_pos_deviation_smoother_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/open_space_task_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/planner_open_space_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/planning.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/planning_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/planning_internal.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/sl_boundary.pb.cc \
+        ../../../thirdpartylib/apollo/modules/planning/proto/task_config.pb.cc \
+        ../../../thirdpartylib/apollo/modules/routing/proto/routing.pb.cc \
     main.cpp \
     mainwindow.cpp
 
@@ -29,3 +85,8 @@ FORMS += \
 qnx: target.path = /tmp/$${TARGET}/bin
 else: unix:!android: target.path = /opt/$${TARGET}/bin
 !isEmpty(target.path): INSTALLS += target
+
+
+INCLUDEPATH += $$PWD/../../../thirdpartylib/apollo
+
+LIBS += -lprotobuf  -lglog

+ 28 - 0
src/controller/apollo_conf_make/mainwindow.cpp

@@ -13,3 +13,31 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
+
+void MainWindow::on_pushButton_Save_clicked()
+{
+    apollo::control::ControlConf xConf1;
+    xConf1.set_steer_angle_rate(100.0);
+
+    google::protobuf::Message * px = (google::protobuf::Message *)&xConf1;
+
+    apollo::control::ControlConf xConf;
+    xConf.CopyFrom(*px);
+
+    using google::protobuf::TextFormat;
+    using google::protobuf::io::FileOutputStream;
+    using google::protobuf::io::ZeroCopyOutputStream;
+
+//    google::protobuf::io::StringOutputStream
+
+    std::string strout;
+    ZeroCopyOutputStream *output = new google::protobuf::io::StringOutputStream(&strout);//new FileOutputStream(file_descriptor);
+    bool success = TextFormat::Print(xConf, output);
+
+    if(success)
+    {
+        qDebug("str:\n %s",strout.data());
+    }
+
+    apollo::cyber::common::SetProtoToASCIIFile(xConf,"/home/yuchuli/xconf.txt");
+}

+ 6 - 0
src/controller/apollo_conf_make/mainwindow.h

@@ -3,6 +3,9 @@
 
 #include <QMainWindow>
 
+#include "cyber/common/file.h"
+#include "modules/control/proto/control_conf.pb.h"
+
 QT_BEGIN_NAMESPACE
 namespace Ui { class MainWindow; }
 QT_END_NAMESPACE
@@ -15,6 +18,9 @@ public:
     MainWindow(QWidget *parent = nullptr);
     ~MainWindow();
 
+private slots:
+    void on_pushButton_Save_clicked();
+
 private:
     Ui::MainWindow *ui;
 };

+ 25 - 2
src/controller/apollo_conf_make/mainwindow.ui

@@ -13,8 +13,31 @@
   <property name="windowTitle">
    <string>MainWindow</string>
   </property>
-  <widget class="QWidget" name="centralwidget"/>
-  <widget class="QMenuBar" name="menubar"/>
+  <widget class="QWidget" name="centralwidget">
+   <widget class="QPushButton" name="pushButton_Save">
+    <property name="geometry">
+     <rect>
+      <x>300</x>
+      <y>460</y>
+      <width>89</width>
+      <height>25</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Save</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>800</width>
+     <height>28</height>
+    </rect>
+   </property>
+  </widget>
   <widget class="QStatusBar" name="statusbar"/>
  </widget>
  <resources/>