fujiankuan před 4 roky
revize
5b0c4e1846
100 změnil soubory, kde provedl 2902 přidání a 0 odebrání
  1. 218 0
      .gitignore
  2. 22 0
      README.md
  3. 12 0
      adciv.pro
  4. 12 0
      addboost.sh
  5. 57 0
      auto_clean.sh
  6. 84 0
      autodeploy.sh
  7. 272 0
      autogen.sh
  8. 157 0
      autogen_cross.sh
  9. 80 0
      autogen_cross_lib.sh
  10. 66 0
      autogen_lib.sh
  11. 64 0
      build_partial.sh
  12. 56 0
      clear_build.sh
  13. 88 0
      deploy-agx.sh
  14. 128 0
      deploy.sh
  15. 118 0
      deploylib.sh
  16. binární
      doc/Xavier刷机说明文档V3.0.docx
  17. binární
      doc/Xavier环境配置V7.4.pdf
  18. binární
      doc/images/ShareMemoryFrame.png
  19. binární
      doc/images/adciv_replay运行效果.png
  20. binární
      doc/工具/AGX在PC下的QT交叉编译环境构建-V1.0.docx
  21. binární
      doc/工具/CAN数据查看工具 .docx
  22. binární
      doc/工具/OpenDrive的地图制作和路径规划使用手册.docx
  23. binární
      doc/工具/OpenDrive的地图制作和路径规划使用手册.pdf
  24. binární
      doc/工具/惯导数据查看工具.docx
  25. binární
      doc/工具/故障诊断接口说明.docx
  26. binární
      doc/工具/日志库使用说明.docx
  27. 8 0
      doc/工具/标定文件示例/view_rawcan.xml
  28. binární
      doc/工具/激光雷达定位使用方法.docx
  29. binární
      doc/工具/激光雷达点云查看.docx
  30. binární
      doc/工具/自动驾驶系统交叉编译.docx
  31. 85 0
      doc/工具/自动驾驶系统录放功能使用手册.md
  32. binární
      doc/感知/DRG栅格图模块-详细设计说明文档.docx
  33. binární
      doc/感知/linux多机时间同步方法——基于PTP协议.pdf
  34. binární
      doc/感知/前方视觉检测算法详细说明.docx
  35. binární
      doc/感知/前方视觉检测算法详细说明.pdf
  36. binární
      doc/感知/时间配准文档/time_manager.docx
  37. binární
      doc/感知/时间配准文档/时间同步 v1.1.docx
  38. binární
      doc/感知/时间配准文档/时间同步.docx
  39. binární
      doc/感知/时间配准文档/时间同步补充.docx
  40. binární
      doc/感知/时间配准文档/时间配准模块v2.docx
  41. binární
      doc/感知/时间配准文档/时间配准详细设计说明文档.docx
  42. binární
      doc/感知/时间配准文档/时间配准进一步调研.docx
  43. binární
      doc/感知/时间配准文档/调研文档0228.docx
  44. 7 0
      doc/感知/标定文件示例/detection_radar_conti_sr308.xml
  45. binární
      doc/感知/毫米波雷达感知.docx
  46. binární
      doc/感知/激光雷达目标检测算法运行说明.pdf
  47. binární
      doc/感知/超声环视融合.docx
  48. binární
      doc/感知/运行激光雷达解析及配准模块前的准备.pdf
  49. binární
      doc/控制/GE3动力学模型的搭建与仿真.docx
  50. binární
      doc/控制/frenet算法说明.docx
  51. binární
      doc/控制/清源小巴车自动驾驶系统设计说明文档20200211-V1.0.docx
  52. binární
      doc/控制/目前控制算法改进及未来发展规划.docx
  53. binární
      doc/控制/系统变量命名规范说明文档20200321-V1.0.docx
  54. binární
      doc/数据解析/can驱动(agx).docx
  55. binární
      doc/数据解析/can驱动(vci).docx
  56. binární
      doc/数据解析/惯导驱动.docx
  57. 8 0
      doc/数据解析/标定文件示例/driver_can nvidia_agx.xml
  58. 11 0
      doc/数据解析/标定文件示例/driver_can vci.xml
  59. 8 0
      doc/数据解析/标定文件示例/driver_gps_sample.xml
  60. 7 0
      doc/数据解析/标定文件示例/driver_lidar_sample.yaml
  61. binární
      doc/数据解析/激光雷达驱动.docx
  62. binární
      doc/架构/ADS系统架构说明文档.docx
  63. binární
      doc/架构/DDS版modulecomm使用说明.docx
  64. 90 0
      doc/架构/共享内存使用说明.md
  65. binární
      doc/架构/堆栈打印模块使用说明.docx
  66. binární
      doc/架构/手机客户端说明.docx
  67. binární
      doc/架构/系统的cloud支持.docx
  68. binární
      doc/架构/运行所有程序前的准备工作和须知.pdf
  69. binární
      doc/模块通信和日志故障诊断使用说明.docx
  70. binární
      doc/模块通信和日志故障诊断使用说明.pdf
  71. binární
      doc/视觉感知/障碍物检测模块使用说明.pdf
  72. 16 0
      include/common.pri
  73. 50 0
      include/data_manager.h
  74. 119 0
      include/ivbacktrace.h
  75. 8 0
      include/ivboost.pri
  76. 3 0
      include/iveigen.pri
  77. 37 0
      include/ivexit.h
  78. 26 0
      include/ivfault.h
  79. 25 0
      include/ivgrpc.pri
  80. 40 0
      include/ivlog.h
  81. 11 0
      include/ivopencv.pri
  82. 8 0
      include/ivpcl.pri
  83. 14 0
      include/ivprotobuf.pri
  84. 9 0
      include/ivversion.h
  85. 7 0
      include/ivyaml-cpp.pri
  86. 40 0
      include/modulecomm.h
  87. 80 0
      include/time_manager.h
  88. 26 0
      include/timer.h
  89. 44 0
      include/worker.h
  90. 35 0
      include/xmlparam.h
  91. 22 0
      sedrp.sh
  92. 32 0
      sh/GE3/ADS_decision.xml
  93. 22 0
      sh/GE3/IVSysMan.xml
  94. 21 0
      sh/GE3/adciv_record.xml
  95. 15 0
      sh/GE3/adciv_replay.xml
  96. 12 0
      sh/GE3/addboost.sh
  97. 57 0
      sh/GE3/auto_clean.sh
  98. 82 0
      sh/GE3/autodeploy.sh
  99. 226 0
      sh/GE3/autogen.sh
  100. 157 0
      sh/GE3/autogen_cross.sh

+ 218 - 0
.gitignore

@@ -0,0 +1,218 @@
+# ---> Qt
+# C++ objects and libs
+
+*.slo
+*.lo
+*.o
+*.a
+*.la
+*.lai
+*.so
+*.dll
+*.dylib
+
+# Qt-es
+
+/.qmake.cache
+/.qmake.stash
+*.pro.user
+*.pro.user.*
+*.qbs.user
+*.qbs.user.*
+*.moc
+moc_*.cpp
+qrc_*.cpp
+ui_*.h
+Makefile*
+*-build-*
+
+# QtCreator
+
+*.autosave
+
+#QtCtreator Qml
+*.qmlproject.user
+*.qmlproject.user.*
+
+# ---> Linux
+*~
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# ---> C++
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# ---> C
+# Object files
+*.o
+*.ko
+*.obj
+*.elf
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Libraries
+*.lib
+*.a
+*.la
+*.lo
+
+# Shared objects (inc. Windows DLLs)
+*.dll
+*.so
+*.so.*
+*.dylib
+
+# Executables
+*.exe
+*.out
+*.app
+*.i*86
+*.x86_64
+*.hex
+
+# Debug files
+*.dSYM/
+
+# ---> Python
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# ---> ROS
+build/
+bin/
+lib/
+msg_gen/
+srv_gen/
+msg/*Action.msg
+msg/*ActionFeedback.msg
+msg/*ActionGoal.msg
+msg/*ActionResult.msg
+msg/*Feedback.msg
+msg/*Goal.msg
+msg/*Result.msg
+msg/_*.py
+
+# Generated by dynamic reconfigure
+*.cfgc
+/cfg/cpp/
+/cfg/*.py
+
+# Ignore generated docs
+*.dox
+*.wikidoc
+
+# eclipse stuff
+.project
+.cproject
+
+# qcreator stuff
+CMakeLists.txt.user
+
+srv/_*.py
+*.pcd
+*.pyc
+qtcreator-*
+*.user
+
+/planning/cfg
+/planning/docs
+/planning/src
+
+*~
+
+# Emacs
+.#*
+
+# Catkin custom files
+CATKIN_IGNORE
+

+ 22 - 0
README.md

@@ -0,0 +1,22 @@
+# modularization
+
+技术发展室模块化自动驾驶系统源代码仓库
+
+
+
+1.autogen.sh 需要设置qtmake路径
+  追加s参数,编译中出现错误时自动退出。默认情况下不退出:
+  $ ./autogen.sh s 
+
+2.生成部署文件用autodeploy.sh,需要设置deploy.sh文件里的Qtgccdir。生成的部署文件在deploy/app目录下。
+
+3.首次下载完成后,请在modularization/路径下,右键打开终端,依次执行如下命令 
+  $chmod +x *.sh
+
+4.修改autodeploy.sh中的CONFIG_IVSysMan为对应项目的配文件。具体文件可以在./other/目录下找到
+
+5.提交代码前,需要执行如下命令,清除编译产物
+  $./auto_clean.sh
+
+6.单独编译某个模块,例如view_ivlog,执行如下命令即可
+  $./build_partial.sh view_ivlog

+ 12 - 0
adciv.pro

@@ -0,0 +1,12 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    $$PWD/src/common/ivfault \
+    $$PWD/src/common/ivlog \
+    $$PWD/src/common/modulecomm \
+#    $$PWD/src/common/ndt_cpu \
+#    $$PWD/src/common/ndt_gpu \
+    $$PWD/src/common/platformif \
+    $$PWD/src/common/xmlparam \
+    $$PWD/src/driver/driver_lidar_rs16 \
+    $$PWD/src/tool/view_gps \

+ 12 - 0
addboost.sh

@@ -0,0 +1,12 @@
+if [ "$#" -lt 1 ]; then
+echo "没有输入"
+echo "$1"
+exit
+fi
+
+BOOSTLIB='/home/yuchuli/tem/boost_1_69_0/stage/lib'  #BOOST LIB路径
+BOOSTINC='/home/yuchuli/tem/boost_1_69_0'  #BOOST INCLUDE 路径
+
+sed -i "s:INCPATH       =:INCPATH       =-I${BOOSTINC} :g" $1
+sed -i "s:LIBS          = :LIBS          = -L${BOOSTLIB} :g" $1
+

+ 57 - 0
auto_clean.sh

@@ -0,0 +1,57 @@
+#!/bin/sh
+
+echo "********************************"
+echo "* clean QT xxx.pro.user* files *"
+echo "********************************"
+
+files=`find . -name "*.user*"`
+for file in $files
+do
+	echo $file
+	rm $file
+done
+echo "done"
+
+#echo "********************************"
+#echo "* clean *.so files              *"
+#echo "********************************"
+
+#files=`find . -name "*.so"`
+#for file in $files
+#do
+#	echo $file
+#	rm $file
+#done
+#echo "done"
+
+
+echo "********************************"
+echo "* clean protobuf build files   *"
+echo "********************************"
+
+rm -f ./src/include/msgtype/*
+echo "done"
+
+echo "********************************"
+echo "* clean binary files *"
+echo "********************************"
+
+rm -rf ./bin
+rm -rf ./deploy/app
+echo "done"
+
+
+echo "********************************"
+echo "* clean QT build folder *"
+echo "********************************"
+
+folders=`find . -name "build-*" -type d`
+for folder in $folders
+do
+	echo $folder
+	rm -rf $folder
+done
+echo "done"
+
+echo "complete !"
+

+ 84 - 0
autodeploy.sh

@@ -0,0 +1,84 @@
+PRO_DIR=`pwd`
+CONFIG_IVSysMan="IVSysMan_Ge3.xml"
+
+check_result=`whereis patchelf | awk '{print $2}'`
+if [ ! $check_result ];then
+    echo -e "\e[31m no found patchelf, Plz install patchelf first\e[0m"
+    exit 1
+fi
+
+app_name=(
+driver_lidar_rs16
+#driver_lidar_vlp16
+driver_gps_hcp2
+driver_radio_p900
+#driver_can_nvidia_agx
+#driver_can_kvaser
+#driver_can_vci
+driver_map_trace
+driver_radio_p900
+detection_radar_delphi_esr
+detection_lidar_grid
+#view_pointcloud
+view_gps
+view_rawcan
+view_radar
+IVSysMan
+ivmapmake
+view_ivlog
+tool_querymsg
+detection_chassis
+ui_ads_hmi
+decition_brain
+#decition_brain_ge3
+controller_midcar
+driver_map_xodrload
+tool_xodrobj
+ivlog_record
+adciv_record
+)
+
+for x in ${app_name[@]}
+do
+	echo "deploy $x"
+	cp ./bin/${x} ./
+	./deploy.sh $x
+	if [ $? == 1 ];then
+		echo "build $x faile"
+		echo "build $x faile"
+		exit 1
+	fi
+	rm ${x}
+done
+
+lib_name=(
+	libmodulecomm.so
+	libndt_cpu.so
+	libxmlparam.so
+	libivfault.so
+	libivlog.so
+	libplatformif.so
+	libivexit.so
+)
+
+for x in ${lib_name[@]}
+do
+	echo "link lib $x"
+	patchelf --set-rpath '$ORIGIN' ./bin/$x
+	if [ "$?" != 0 ];then
+		echo -e "\e[31m patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
+		exit 1
+	fi
+done
+
+echo "creat IVSysMan.xml"
+cp ./other/$CONFIG_IVSysMan ./deploy/app/IVSysMan.xml
+cp ./other/ADS_decision.xml ./deploy/app/ADS_decision.xml
+sed -i "s|xxxxxx|$PRO_DIR/deploy/app|g" ./deploy/app/IVSysMan.xml
+
+cp ./bin/*.so ./deploy/app/lib/
+
+echo ""
+echo "***************"
+echo "***  done!  ***"
+echo "***************"

+ 272 - 0
autogen.sh

@@ -0,0 +1,272 @@
+
+qtmake="/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake"
+#qtmake=/usr/bin/qmake
+#qtmake="/usr/lib/aarch64-linux-gnu/qt5/bin/qmake"
+if [ ! $qtmake ];then
+	echo -e "\e[33m qtmake not set, auto find it\e[0m"
+	qtmake=`find /opt -name "qmake" 2>/dev/null | grep 'gcc_64'`
+fi
+
+if [ ! $qtmake ];then
+	echo -e "\e[33m can't find qmake \e[0m"
+	exit 1
+fi
+
+echo -e "\e[33m qtmake: $qtmake \e[0m"
+
+show_error=$1
+check_result()
+{
+    if [ "$1" != 0 -a "$show_error" == "s" ];then
+		echo -e "\e[33m*************************************************\e[0m"
+        echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
+		echo -e "\e[33m*************************************************\e[0m"
+ 	    exit 1
+	fi
+}
+
+function checkOS_TYPE(){
+    if [[ ! -z "`uname | grep Darwin`" ]];then
+        OS_TYPE=osx
+		install_path=/Applications
+    elif [[ ! -z "`uname | grep Linux`" ]];then
+        OS_TYPE=linux
+		install_path=/usr/lib
+    else
+        echo "Unsupported operating systems!"
+        exit 1
+    fi
+    echo "The current operating system is"
+    echo $OS_TYPE
+}
+
+function checkos(){
+    if [[ -f /etc/redhat-release ]];then
+        OS=Centos
+    elif [[ ! -z "`cat /etc/issue | grep bian`" ]];then
+        OS=Debian
+    elif [[ ! -z "`cat /etc/issue | grep Ubuntu`" ]];then
+        OS=Ubuntu
+    else
+        echo "Unknow!!!"
+    fi
+	echo $OS
+}
+
+checkOS_TYPE
+checkos
+
+MAKEOPT=-j8
+
+mkdir bin
+
+cd src/include/proto
+sh ./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ndt_cpu/
+$qtmake ndt_cpu.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libndt_cpu.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivexit/
+$qtmake ivexit.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivexit.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivbacktrace/
+$qtmake ivbacktrace.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivbacktrace.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+controller_app_name=(
+	controller_ge3
+	controller_vv7
+    controller_midcar
+)
+
+for x in ${controller_app_name[@]}
+do
+	cd src/controller/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+decition_app_name=(
+	decition_brain
+	#decition_brain_ge3
+	#decition_brain_qingyuan
+	#decition_brain_vv7
+)
+
+for x in ${decition_app_name[@]}
+do
+	cd src/decition/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+driver_app_name=(
+	driver_lidar_rs16
+#	driver_lidar_vlp16
+	driver_gps_hcp2
+	#driver_gps_ins550d
+	driver_can_nvidia_agx
+	driver_can_kvaser
+	driver_radio_p900
+#	driver_can_vci
+	driver_map_trace
+	driver_map_xodrload
+    driver_radio_p900
+)
+
+for x in ${driver_app_name[@]}
+do
+	cd src/driver/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+detect_app_name=(
+	#detection_radar_conti_sr308
+	detection_radar_delphi_esr
+	detection_chassis
+	detection_lidar_grid
+)
+
+for x in ${detect_app_name[@]}
+do
+	cd src/detection/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+tool_app_name=(
+	view_pointcloud
+	view_gps
+	view_rawcan
+	view_radar
+	IVSysMan
+	ivmapmake
+	view_ivlog
+	tool_querymsg
+	tool_xodrobj
+	ivlog_record
+	adciv_record
+)
+
+for x in ${tool_app_name[@]}
+do
+	cd src/tool/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+ui_app_name=(
+	ui_ads_hmi
+)
+
+for x in ${ui_app_name[@]}
+do
+	cd src/ui/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+

+ 157 - 0
autogen_cross.sh

@@ -0,0 +1,157 @@
+
+qtmake="/opt/qt/5.10.1/gcc_64/bin/qmake"
+
+MAKEOPT=-j8
+
+cd src/include/proto
+./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+
+cd src/common/ivlog/
+$qtmake ivlog.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivlog.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+controller_app_name=(
+controller_ge3
+)
+
+for x in ${controller_app_name[@]}
+do
+cd src/controller/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+decition_app_name=(
+decition_brain_ge3
+)
+
+for x in ${decition_app_name[@]}
+do
+cd src/decition/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+driver_app_name=(
+driver_can_nvidia_agx
+driver_map_trace
+)
+
+for x in ${driver_app_name[@]}
+do
+cd src/driver/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+detect_app_name=(
+detection_radar_conti_sr308
+)
+
+for x in ${detect_app_name[@]}
+do
+cd src/detection/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+tool_app_name=(
+ivlog_record
+testcross1
+testcross2
+testcrossyaml
+)
+
+for x in ${tool_app_name[@]}
+do
+cd src/tool/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+

+ 80 - 0
autogen_cross_lib.sh

@@ -0,0 +1,80 @@
+
+qtmake="/opt/qt/5.10.1/gcc_64/bin/qmake"
+
+MAKEOPT=-j8
+
+cd src/include/proto
+./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+
+cd src/common/ivlog/
+$qtmake ivlog.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivlog.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+tool_app_name=(
+ivlog_record
+)
+
+for x in ${tool_app_name[@]}
+do
+cd src/tool/${x}/
+$qtmake ${x}.pro
+./sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+
+

+ 66 - 0
autogen_lib.sh

@@ -0,0 +1,66 @@
+
+qtmake="/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake"
+
+MAKEOPT=-j8
+
+cd src/include/proto
+./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+make $MAKEOPT
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+make $MAKEOPT
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ndt_cpu/
+$qtmake ndt_cpu.pro
+make $MAKEOPT
+make clean
+cp libndt_cpu.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivlog/
+$qtmake ivlog.pro
+make $MAKEOPT
+make clean
+cp libivlog.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+make $MAKEOPT
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+make $MAKEOPT
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+
+
+

+ 64 - 0
build_partial.sh

@@ -0,0 +1,64 @@
+#!/bin/bash
+
+qtmake="/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake"
+
+check_result()
+{
+	 
+	if [ "$1" != 0 ];then
+    	echo -e "\e[33m*************************************************\e[0m"
+    	echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
+    	echo -e "\e[33m*************************************************\e[0m"
+ 	   	exit 1
+    fi
+
+}
+
+module=$1
+echo -e "\e[33m module name: \e[1;33m $module \e[0m"
+
+projectDir=`pwd`
+echo -e "project folder \e[33m$projectDir\e[0m"
+
+MAKEOPT=-j8
+
+mkdir bin
+outputDir=$projectDir"/bin"
+echo -e "output folder \e[33m$outputDir\e[0m"
+
+cd src
+sourceDir=`pwd`
+echo -e "source code folder \e[33m$sourceDir\e[0m"
+
+moduleDir=`find . -type d -name $module`
+if [ $moduleDir ];then
+	moduleDir=$sourceDir${moduleDir#*.}
+	echo -e "module code folder \e[33m$moduleDir\e[0m"
+	cd $moduleDir
+	moduleName=$module".pro"
+	echo -e "\e[1;35;47m START BUILD\e[0m"
+	$qtmake $moduleName
+	make $MAKEOPT
+	check_result $? 
+	make clean
+	cp $module $outputDir
+	rm Makefile
+	rm .qmake.stash
+	rm $module
+	cd $projectDir
+	echo -e "\e[1;33;44m Build $module Success \e[0m"
+	sleep 1
+
+	echo -e "\e[35m Start deploy\e[0m"
+	cp $outputDir"/"$module ./
+	bash deploy.sh $module
+	if [ "$?" == 1 ];then
+		exit 1
+	fi
+	rm $module
+	echo -e "\e[1;33;44m Deploy $module Success \e[0m"
+
+else
+	echo -e "\e[31m Can't find module code, exit.....\e[0m"
+	exit
+fi

+ 56 - 0
clear_build.sh

@@ -0,0 +1,56 @@
+
+cd src/common
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+cd src/driver
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+cd src/detection
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+cd src/fusion
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+cd src/tool
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+cd src/decition
+project_path=$(pwd)
+project_name="${project_path##*/}"
+echo $project_path
+#echo $project_name
+ls build-*
+find $project_path  -name  'build-*'  -type  d  | xargs rm -rf 
+cd ../../
+
+

+ 88 - 0
deploy-agx.sh

@@ -0,0 +1,88 @@
+#! /bin/bash
+
+Qtgccdir='/usr/lib/aarch64-linux-gnu/qt5'
+QtPlatformdir=$Qtgccdir/plugins/platforms
+QtLibDir=$Qtgccdir/lib
+
+if [ "$#" -lt 1 ]; then
+	echo "没有输入"
+	echo "$1"
+	exit
+fi
+
+ignore_lib_name=(
+libstdc++.so.*
+libm.so.*
+libgcc_s.so.*
+libc.so.*
+libpthread.so.*
+libGL.so.*
+libz.so.*
+libgthread*
+libglib*
+libexpat*
+libxcb*
+libdl.so.*
+libxshmfence*
+libglapi.so.*
+libXext.so.*
+libXdamage.so.*
+libXfixes.so.*
+libX11*
+libXxf86vm.so.*
+libdrm.so.*
+libpcre.so.*
+libXau.so.*
+libXdmcp.so.*
+)
+
+EXE="$1"
+PWD=`pwd`
+rm -rf app
+mkdir app
+cd app
+mkdir lib
+cd ..
+mkdir commonlib
+cd commonlib
+mkdir platforms
+cp $QtPlatformdir/libqxcb.so platforms
+cd platforms
+mkdir lib
+libfiles=`ldd libqxcb.so | awk '{ if(match($3,"^/"))printf("%s "),$3 }'` 
+cp $libfiles $PWD/lib 
+cd ..
+mkdir lib
+cp $QtLibDir/libQt5DBus.* $PWD/lib
+cp $QtLibDir/libQt5XcbQpa.* $PWD/lib
+rm -rf $PWD/platforms/lib
+cd platforms
+
+cd ..
+cd ..
+
+files=`ldd $EXE | awk '{ if(match($3,"^/"))printf("%s "),$3 }'`
+cp $files $PWD/app/lib
+cp $PWD/commonlib/lib/* $PWD/app/lib
+cp -r  $PWD/commonlib/platforms $PWD/app
+cp $EXE $PWD/app
+
+for x in ${ignore_lib_name[@]}
+do
+rm -f $PWD/app/lib/${x}
+done
+
+rm -rf commonlib
+
+cd app
+patchelf --set-rpath '$ORIGIN/lib/' $EXE
+cd platforms
+patchelf --set-rpath '$ORIGIN/../lib/' libqxcb.so
+cd ..
+cd ..
+
+cp -r app $PWD/deploy/
+
+rm -rf app
+
+

+ 128 - 0
deploy.sh

@@ -0,0 +1,128 @@
+#! /bin/bash
+
+Qtgccdir=''
+#Qtgccdir='/usr/lib/aarch64-linux-gnu/qt5'
+#QtLibDir=/usr/lib/aarch64-linux-gnu/
+
+
+if [ ${#Qtgccdir} -lt 6 ]; then
+  echo "Because not set gcc_64 , so auto find gcc_64 "
+  optfiles=`find /opt -name 'gcc_64'` 
+  for entry in $optfiles
+  do
+     if [ ${entry:0-6:6} == "gcc_64" ];  then
+       if [ -d $entry ];  then
+          Qtgccdir="$entry"
+	  echo -e "\033[32m""  -----found gccdir:"$Qtgccdir"\033[0m"
+       fi
+     fi
+  done
+fi
+
+if [ ${#Qtgccdir} -lt 6 ]; then
+  if [ -d '/usr/lib/aarch64-linux-gnu/qt5' ]; then
+    Qtgccdir='/usr/lib/aarch64-linux-gnu/qt5'
+  else 
+    echo "if NVIDIA,please sudo apt install qt"
+  fi
+fi
+
+if [ ${#Qtgccdir} -lt 6 ]; then
+   echo -e "\033[31m""  -----not found gccdir: so exit""\033[0m"
+   exit 1
+fi
+
+
+if [ "$#" -lt 1 ]; then
+	echo "没有输入"
+	echo "$1"
+	exit
+fi
+
+QtPlatformdir=$Qtgccdir/plugins/platforms
+QtLibDir=$Qtgccdir/lib
+
+ignore_lib_name=(
+libstdc++.so.*
+libm.so.*
+libgcc_s.so.*
+libc.so.*
+libpthread.so.*
+libGL.so.*
+libz.so.*
+libgthread*
+libglib*
+libexpat*
+libxcb*
+libdl.so.*
+libxshmfence*
+libglapi.so.*
+libXext.so.*
+libXdamage.so.*
+libXfixes.so.*
+libX11*
+libXxf86vm.so.*
+libdrm.so.*
+libpcre.so.*
+libXau.so.*
+libXdmcp.so.*
+)
+
+EXE="$1"
+PWD=`pwd`
+rm -rf app
+mkdir app
+cd app
+mkdir lib
+cd ..
+mkdir commonlib
+cd commonlib
+mkdir platforms
+cp $QtPlatformdir/libqxcb.so platforms
+cd platforms
+mkdir lib
+libfiles=`ldd libqxcb.so | awk '{ if(match($3,"^/"))printf("%s "),$3 }'` 
+cp $libfiles $PWD/lib 
+cd ..
+mkdir lib
+cp $QtLibDir/libQt5DBus.* $PWD/lib
+cp $QtLibDir/libQt5XcbQpa.* $PWD/lib
+rm -rf $PWD/platforms/lib
+cd platforms
+
+cd ..
+cd ..
+
+files=`ldd $EXE | awk '{ if(match($3,"^/"))printf("%s "),$3 }'`
+cp $files $PWD/app/lib
+cp $PWD/commonlib/lib/* $PWD/app/lib
+cp -r  $PWD/commonlib/platforms $PWD/app
+cp $EXE $PWD/app
+
+for x in ${ignore_lib_name[@]}
+do
+rm -f $PWD/app/lib/${x}
+done
+
+rm -rf commonlib
+
+cd app
+patchelf --set-rpath '$ORIGIN/lib/' $EXE
+if [ "$?" != 0 ];then
+	echo -e "\e[31m deploy.sh: patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
+	exit 1
+fi
+cd platforms
+patchelf --set-rpath '$ORIGIN/../lib/' libqxcb.so
+if [ "$?" != 0 ];then
+	echo -e "\e[31m deploy.sh: patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
+#	exit 1
+fi
+cd ..
+cd ..
+
+cp -r app $PWD/deploy/
+
+rm -rf app
+
+

+ 118 - 0
deploylib.sh

@@ -0,0 +1,118 @@
+#! /bin/bash
+
+Qtgccdir=''
+if [ ${#Qtgccdir} -lt 6 ]; then
+  echo "Because not set gcc_64 , so auto find gcc_64 "
+  optfiles=`find /opt -name 'gcc_64'` 
+  for entry in $optfiles
+  do
+     if [ ${entry:0-6:6} == "gcc_64" ];  then
+       if [ -d $entry ];  then
+          Qtgccdir="$entry"
+	  echo -e "\033[32m""  -----found gccdir:"$Qtgccdir"\033[0m"
+       fi
+     fi
+  done
+fi
+
+if [ ${#Qtgccdir} -lt 6 ]; then
+  if [ -d '/usr/lib/aarch64-linux-gnu/qt5' ]; then
+    Qtgccdir='/usr/lib/aarch64-linux-gnu/qt5'
+  else 
+    echo "if NVIDIA,please sudo apt install qt"
+  fi
+fi
+
+if [ ${#Qtgccdir} -lt 6 ]; then
+   echo -e "\033[31m""  -----not found gccdir: so exit""\033[0m"
+   exit 1
+fi
+
+QtPlatformdir=$Qtgccdir/plugins/platforms
+QtLibDir=$Qtgccdir/lib
+
+if [ "$#" -lt 1 ]; then
+	echo "没有输入"
+	echo "$1"
+	exit
+fi
+
+ignore_lib_name=(
+libstdc++.so.*
+libm.so.*
+libgcc_s.so.*
+libc.so.*
+libpthread.so.*
+libGL.so.*
+libz.so.*
+libgthread*
+libglib*
+libexpat*
+libxcb*
+libdl.so.*
+libxshmfence*
+libglapi.so.*
+libXext.so.*
+libXdamage.so.*
+libXfixes.so.*
+libX11*
+libXxf86vm.so.*
+libdrm.so.*
+libpcre.so.*
+libXau.so.*
+libXdmcp.so.*
+)
+
+EXE="$1"
+PWD=`pwd`
+rm -rf app
+mkdir app
+cd app
+mkdir lib
+cd ..
+mkdir commonlib
+cd commonlib
+mkdir platforms
+cp $QtPlatformdir/libqxcb.so platforms
+cd platforms
+mkdir lib
+libfiles=`ldd libqxcb.so | awk '{ if(match($3,"^/"))printf("%s "),$3 }'` 
+cp $libfiles $PWD/lib 
+cd ..
+mkdir lib
+cp $QtLibDir/libQt5DBus.s* $PWD/lib
+cp $QtLibDir/libQt5XcbQpa.s* $PWD/lib
+rm -rf $PWD/platforms/lib
+cd platforms
+
+cd ..
+cd ..
+
+files=`ldd $EXE | awk '{ if(match($3,"^/"))printf("%s "),$3 }'`
+cp $files $PWD/app/lib
+cp $PWD/commonlib/lib/* $PWD/app/lib
+cp -r  $PWD/commonlib/platforms $PWD/app
+cp $EXE $PWD/app/lib
+
+for x in ${ignore_lib_name[@]}
+do
+rm -f $PWD/app/lib/${x}
+done
+
+rm -rf commonlib
+
+cd app
+cd lib
+patchelf --set-rpath '$ORIGIN' $EXE
+if [ "$?" != 0 ];then
+	echo -e "\e[31m deploy.sh: patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
+	exit 1
+fi
+cd ..
+cd ..
+
+cp -r app $PWD/deploy/
+
+rm -rf app
+
+

binární
doc/Xavier刷机说明文档V3.0.docx


binární
doc/Xavier环境配置V7.4.pdf


binární
doc/images/ShareMemoryFrame.png


binární
doc/images/adciv_replay运行效果.png


binární
doc/工具/AGX在PC下的QT交叉编译环境构建-V1.0.docx


binární
doc/工具/CAN数据查看工具 .docx


binární
doc/工具/OpenDrive的地图制作和路径规划使用手册.docx


binární
doc/工具/OpenDrive的地图制作和路径规划使用手册.pdf


binární
doc/工具/惯导数据查看工具.docx


binární
doc/工具/故障诊断接口说明.docx


binární
doc/工具/日志库使用说明.docx


+ 8 - 0
doc/工具/标定文件示例/view_rawcan.xml

@@ -0,0 +1,8 @@
+<xml>	
+	<node name="view_rawcan">
+		<param name="cansend0" value="cansend0" />
+		<param name="cansend1" value="cansend1" />
+		<param name="canrecv0" value="canrecv0" />
+		<param name="canrecv1" value="canrecv1" />
+	</node>
+</xml>

binární
doc/工具/激光雷达定位使用方法.docx


binární
doc/工具/激光雷达点云查看.docx


binární
doc/工具/自动驾驶系统交叉编译.docx


+ 85 - 0
doc/工具/自动驾驶系统录放功能使用手册.md

@@ -0,0 +1,85 @@
+# 自动驾驶系统录放功能使用手册
+
+## 1.实现原理
+
+自动驾驶系统采用模块化架构, 各模块间数据通信采用共享内存的通信方式,记录系统运行中所有共享内存中的数据,并按时间顺序重新输出,即可重现系统运行时的真实场景。为方便故障重现调试分析,依据以上运行原理,实现了实时数据存储录放功能。整体系统框架如下:
+
+![ShareMemoryFrame](../images/ShareMemoryFrame.png)
+
+
+
+adciv_record功能启动后,会开始存储预设的共享内存(根据配置文件决定)中的数据内容,启动adciv_record模块时,会输出数据到所有预配置的共享内存中。
+
+## 2.使用方法
+
+**1. 添加共享内存**
+
+方法参考[共享内存使用方法](../架构/共享内存使用说明.md)
+
+**2. 添加record配置信息**
+
+打开`adciv_record.xml`按如下格式配置,注意MEMNAME序号递增,value名字为已注册的共享内存名,名字不符的话,无法记录
+
+```xml
+<xml>	
+	<node name="bqev_record">
+		<param name="savedir" value="/home/a/ivd" />
+		<param name="spacekeep(M)" value="20000" />
+		<param name="filemax" value = "10" />
+		<param name="filesizelim(M)" value="20000" />
+		<param name="MEMNAME001" value="usbpic" />
+		<param name="MEMNAME002" value="brainstate" />
+		<param name="MEMNAME003" value="deciton" />
+		<param name="MEMNAME004" value="hcp2_gpsimu" />
+	</node>
+</xml>
+```
+
+**3. 添加replay配置信息**
+
+打开`adciv_replay.xml`,配置方式同record。
+
+运行效果图:
+
+![运行效果](../images/adciv_replay运行效果.png)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

binární
doc/感知/DRG栅格图模块-详细设计说明文档.docx


binární
doc/感知/linux多机时间同步方法——基于PTP协议.pdf


binární
doc/感知/前方视觉检测算法详细说明.docx


binární
doc/感知/前方视觉检测算法详细说明.pdf


binární
doc/感知/时间配准文档/time_manager.docx


binární
doc/感知/时间配准文档/时间同步 v1.1.docx


binární
doc/感知/时间配准文档/时间同步.docx


binární
doc/感知/时间配准文档/时间同步补充.docx


binární
doc/感知/时间配准文档/时间配准模块v2.docx


binární
doc/感知/时间配准文档/时间配准详细设计说明文档.docx


binární
doc/感知/时间配准文档/时间配准进一步调研.docx


binární
doc/感知/时间配准文档/调研文档0228.docx


+ 7 - 0
doc/感知/标定文件示例/detection_radar_conti_sr308.xml

@@ -0,0 +1,7 @@
+<xml>	
+	<node name="detection_radar_conti_sr308">
+		<param name="cansend" value="cansend0" />
+		<param name="canrecv" value="canrecv0" />
+		<param name="radar" value="radar1" />
+	</node>
+</xml>

binární
doc/感知/毫米波雷达感知.docx


binární
doc/感知/激光雷达目标检测算法运行说明.pdf


binární
doc/感知/超声环视融合.docx


binární
doc/感知/运行激光雷达解析及配准模块前的准备.pdf


binární
doc/控制/GE3动力学模型的搭建与仿真.docx


binární
doc/控制/frenet算法说明.docx


binární
doc/控制/清源小巴车自动驾驶系统设计说明文档20200211-V1.0.docx


binární
doc/控制/目前控制算法改进及未来发展规划.docx


binární
doc/控制/系统变量命名规范说明文档20200321-V1.0.docx


binární
doc/数据解析/can驱动(agx).docx


binární
doc/数据解析/can驱动(vci).docx


binární
doc/数据解析/惯导驱动.docx


+ 8 - 0
doc/数据解析/标定文件示例/driver_can nvidia_agx.xml

@@ -0,0 +1,8 @@
+<xml>	
+	<node name="driver_can_nvidia_agx">
+		<param name="cansend0" value="cansend0" />
+		<param name="cansend1" value="cansend1" />
+		<param name="canrecv0" value="canrecv0" />
+		<param name="canrecv1" value="canrecv1" />
+	</node>
+</xml>

+ 11 - 0
doc/数据解析/标定文件示例/driver_can vci.xml

@@ -0,0 +1,11 @@
+<xml>	
+	<node name="driver_can_vci">
+		<param name="devnum" value="0" />
+		<param name="baud0" value="500k" />
+		<param name="baud1" value="500k" />	
+		<param name="cansend0" value="cansend0" />
+		<param name="cansend1" value="cansend1" />
+		<param name="canrecv0" value="canrecv0" />
+		<param name="canrecv1" value="canrecv1" />
+	</node>
+</xml>

+ 8 - 0
doc/数据解析/标定文件示例/driver_gps_sample.xml

@@ -0,0 +1,8 @@
+<xml>	
+	<node name="driver_gps_hcp2">
+		<param name="devname" value="usbpic" />
+		<param name="msg_gpsimu" value = "hcp2_gpsimu" />
+		<param name="msg_gps" value="hcp2_gps" />
+		<param name="msg_imu" value="hcp2_imu" />
+	</node>
+</xml>

+ 7 - 0
doc/数据解析/标定文件示例/driver_lidar_sample.yaml

@@ -0,0 +1,7 @@
+memname : lidarpc_center
+rollang : 270.0
+inclinationang_xaxis : 0.0
+inclinationang_yaxis : 0.0
+hostip : 192.168.1.102
+port : 6699
+

binární
doc/数据解析/激光雷达驱动.docx


binární
doc/架构/ADS系统架构说明文档.docx


binární
doc/架构/DDS版modulecomm使用说明.docx


+ 90 - 0
doc/架构/共享内存使用说明.md

@@ -0,0 +1,90 @@
+# How to use share memory
+
+共享内存使用分为发送端和接收端,以下分别介绍
+
+## 发送端
+
+**1. 添加共享内存消息格式文件**
+
+共享内存中数据采用protobuf格式存储,Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于**网络通信**和**数据存储**。
+
+为使用共享内存,需添加一个相应的proto文件,文件位于`modularization/src/include/proto/hmi.proto`,可参考已有的文件编写
+
+```protobuf
+syntax = "proto2";
+package iv.hmi;
+message hmimsg
+{
+ required bool mbPause = 1;
+ required bool mbBocheMode = 2;
+ required bool mbbusmode = 3;
+};
+```
+
+**2. 注册共享内存**
+
+在工程配置文件***.pro中添加引用信息:
+
+```
+SOURCES += \
+    ../../include/msgtype/ui.pb.cc
+HEADERS += \   
+    ../../include/msgtype/ui.pb.h
+LIBS += -lprotobuf
+INCLUDEPATH += $$PWD/../../include/msgtype
+LIBS += -L$$PWD/../../../bin/ -lmodulecomm 
+```
+
+设置共享内存名并注册:
+
+```c++
+std::string strmemvbox = "test"
+gpa = iv::modulecomm::RegisterSend(strmemvbox.data(),100000,3);iv::modulecomm::RegisterSend(strmemvbox.data(),100000,3);
+```
+
+写入数据:
+
+```c++
+char * str = new char[gobj.ByteSize()]; //gobj是一个probuf数据,使用方法参考protobuf的使用
+int nsize = gobj.ByteSize();
+if(gobj.SerializeToArray(str,nsize))
+{
+    iv::modulecomm::ModuleSendMsg(gpa,str,nsize);
+}
+```
+
+## 接收端
+
+**从共享内中读取数据**
+
+工程配置文件中添加配置信息:
+
+```pro
+SOURCES += \
+    ../../include/msgtype/ui.pb.cc
+HEADERS += \   
+    ../../include/msgtype/ui.pb.h
+LIBS += -lprotobuf
+INCLUDEPATH += $$PWD/../../include/msgtype
+LIBS += -L$$PWD/../../../bin/ -lmodulecomm 
+```
+
+源码中实现:
+
+```c++
+std::string strmemcan = “test”;//设置共享内存名字
+iv::modulecomm::RegisterRecv(strmemcan.data(),listen); 
+//数据接收函数,共享内存收到数据时,会调用:
+void listen(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    if(nSize<1)return;
+    iv::can::canmsg xmsg;
+    if(false == xmsg.ParseFromArray(strdata,nSize))
+    {
+        std::cout<<"esr Listencan0 fail."<<std::endl;
+        return;
+    }
+    DecodeVboxData(xmsg);
+}
+```
+

binární
doc/架构/堆栈打印模块使用说明.docx


binární
doc/架构/手机客户端说明.docx


binární
doc/架构/系统的cloud支持.docx


binární
doc/架构/运行所有程序前的准备工作和须知.pdf


binární
doc/模块通信和日志故障诊断使用说明.docx


binární
doc/模块通信和日志故障诊断使用说明.pdf


binární
doc/视觉感知/障碍物检测模块使用说明.pdf


+ 16 - 0
include/common.pri

@@ -0,0 +1,16 @@
+
+INCLUDEPATH += $$PWD/../include/
+LIBS += -L$$PWD/../bin/ -lxmlparam -lmodulecomm -livbacktrace -livlog -livfault -livexit
+
+
+unix:LIBS += -lboost_system  -lbacktrace -ldl
+
+QMAKE_CXXFLAGS +=  -g
+
+CONFIG += c++11
+
+QMAKE_LFLAGS += -no-pie
+
+INCLUDEPATH += $$PWD/../src/include/msgtype
+
+

+ 50 - 0
include/data_manager.h

@@ -0,0 +1,50 @@
+#ifndef DATA_MANAGER_H
+#define DATA_MANAGER_H
+#include <QtCore/qglobal.h>
+
+#include <stdarg.h>
+#include "time_manager.h"
+#if defined(DATAMANAGER_LIBRARY)
+#  define DATAMANAGERSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define DATAMANAGERSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+
+namespace iv {
+
+class DATAMANAGERSHARED_EXPORT DataManager
+{
+public:
+    typedef  iv::radar::radarobjectarray RadarDataType;
+    typedef  iv::lidar::objectarray LidarDataType;
+//    typedef  iv::vision::cameraobjectarray CameraDataType;
+    typedef  iv::vision::ObstacleInfo VisionDataType;
+    typedef  std::chrono::system_clock::time_point TimeType;
+//    typedef  std::function<void(RadarDataType&, LidarDataType&,CameraDataType&)> DataCallback;
+//    typedef  std::function<void(RadarDataType&,CameraDataType&)> RVCallback;
+    typedef  std::function<void(RadarDataType&, LidarDataType&,VisionDataType&)> DataCallback;
+
+    typedef  std::function<void(RadarDataType&,VisionDataType&)> RVCallback;
+
+public:
+//    void init();
+    void SetLidar(iv::lidar::objectarray& lidar_object_array);
+    void SetRadar(iv::radar::radarobjectarray& radar_object_array);
+    void SetCamera(iv::vision::ObstacleInfo& vision_object_array);
+
+    void Ready();
+
+    void SetDataCallback(DataCallback callback);
+    void SetRVCallback(RVCallback rvcallback);
+
+private:
+    std::shared_ptr<iv::TimeManager> data_manager_ptr_;
+    std::shared_ptr<iv::TimeManager> rv_manager_ptr_;
+
+};
+
+}
+
+
+#endif // DATA_MANAGER_H

+ 119 - 0
include/ivbacktrace.h

@@ -0,0 +1,119 @@
+#ifndef IVBACKTRACE_H
+#define IVBACKTRACE_H
+
+#include <QtCore/qglobal.h>
+
+
+//#define USE_BOOSTBACKTRACE  //if USE_BOOSTBACKTRACE LIBS += -ldl LIBS += -lboost_system -lboost_filesystem -lbacktrace
+
+#if defined(IVBACKTRACE_LIBRARY)
+#  define IVBACKTRACE_EXPORT Q_DECL_EXPORT
+#else
+#  define IVBACKTRACE_EXPORT Q_DECL_IMPORT
+#endif
+
+#ifndef USE_BOOSTBACKTRACE
+
+
+void RegisterIVBackTrace();
+
+
+#else
+
+
+#ifdef Q_OS_LINUX
+
+#ifndef  BOOST_STACKTRACE_USE_BACKTRACE
+#define BOOST_STACKTRACE_USE_BACKTRACE
+#endif
+
+#endif
+
+#include <string>
+#include <boost/noncopyable.hpp>
+#include <boost/function.hpp>
+#include <boost/stacktrace.hpp>
+
+#include <signal.h>     // ::signal, ::raise
+// #include <strstream>
+#include <stdexcept>    // std::logic_error
+#include <iostream>     // std::cerr
+#include <boost/filesystem.hpp>
+
+#include <strstream>
+
+#include <iostream>
+
+#include <QFile>
+#include <QDateTime>
+#include <QDir>
+/*
+size_t get_executable_path( char* processdir,char* processname, size_t len)
+{
+        char* path_end;
+        int nsize;
+        if((nsize =readlink("/proc/self/exe", processdir,len)) <=0)
+                return -1;
+
+        processdir[nsize] = '\0';
+        path_end = strrchr(processdir,  '/');
+        if(path_end == NULL)
+                return -1;
+        ++path_end;
+
+
+        strcpy(processname, path_end);
+        *path_end = '\0';
+
+        return (size_t)(path_end - processdir);
+}
+*/
+void x_signal_handler(int signum) {
+    ::signal(signum, SIG_DFL);
+
+    std::ostrstream ostr;
+    ostr<<boost::stacktrace::stacktrace()<<std::endl;
+//    std::cout << boost::stacktrace::stacktrace()<<std::endl;
+
+
+    char strpath[1024];
+    QDateTime dt = QDateTime::currentDateTime();
+    char path[1000];
+    char processname[1024];
+//    get_executable_path(path, processname, 1000);
+    snprintf(strpath,255,"%s/log/%s-%d-%s.log",getenv("HOME"),processname, getpid(),dt.toString("yyyyMMddhhmmsszzz").toLatin1().data());
+
+    char strdir[1024];
+    snprintf(strdir,255,"%s/log",getenv("HOME"));
+    QDir xdir;
+    xdir.setPath(strdir);
+    if(!xdir.exists())
+    {
+        qDebug("create dir %s",strdir);
+        xdir.mkdir(strdir);
+    }
+    QFile xFile;
+    xFile.setFileName(strpath);
+    if(xFile.open(QIODevice::ReadWrite))
+    {
+        xFile.write(ostr.str());
+    }
+    else
+    {
+        std::cout<<ostr.str()<<std::endl;
+    }
+    xFile.close();
+    ::raise(SIGABRT);
+}
+
+void RegisterIVBackTrace()
+{
+	std::ostrstream ostr;
+    ostr << boost::stacktrace::stacktrace()<<std::endl;
+    ::signal(SIGSEGV, &x_signal_handler);
+//    ::signal(SIGABRT, &x_signal_handler);
+}
+
+#endif
+
+#endif // IVBACKTRACE_H

+ 8 - 0
include/ivboost.pri

@@ -0,0 +1,8 @@
+
+
+unix: LIBS += -lboost_system -lboost_thread -lboost_serialization
+
+
+windows: LIBS += -L$$PWD/../thirdpartylib/boost/lib -lboost_system-mgw73-mt-x64-1_66 -lboost_thread-mgw73-mt-x64-1_66 -lboost_serialization-mgw73-mt-x64-1_66
+
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/boost/include/boost-1_66

+ 3 - 0
include/iveigen.pri

@@ -0,0 +1,3 @@
+unix: INCLUDEPATH += /usr/include/eigen3
+
+win32: INCLUDEPATH += $$PWD/../thirdpartylib/eigen

+ 37 - 0
include/ivexit.h

@@ -0,0 +1,37 @@
+#ifndef IVEXIT_H
+#define IVEXIT_H
+
+#include <QtCore/qglobal.h>
+#include <QDateTime>
+
+#include <functional>
+
+#if defined(IVEXIT_LIBRARY)
+#  define IVEXITSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define IVEXITSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+
+
+//#include <iostream>
+//#include <thread>
+
+//using namespace std::placeholders;
+typedef std::function<void()> IVExitFun;
+typedef void (* IVExitCallBack)();
+
+namespace iv {
+namespace ivexit {
+void * IVEXITSHARED_EXPORT RegIVExitCmd();
+void   IVEXITSHARED_EXPORT ExecIVExitCmd(void * handle,const char * strsyscmd);
+void * IVEXITSHARED_EXPORT RegIVExitCall(IVExitCallBack pCall,bool bcommonexit = true);
+void * IVEXITSHARED_EXPORT RegIVExitCallPlus(IVExitFun xFun,bool bcommonexit = true);
+
+}
+
+}
+
+
+
+#endif 

+ 26 - 0
include/ivfault.h

@@ -0,0 +1,26 @@
+#ifndef IVFAULT_H
+#define IVFAULT_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(IVFAULT_LIBRARY)
+#  define IVFAULTSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define IVFAULTSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+namespace  iv {
+
+class IVFAULTSHARED_EXPORT Ivfault
+{
+
+public:
+    Ivfault(const char * strmodulename);
+    int SetFaultState(int nFaultClass,int nFaultNum,const char * strfaultdesc);   // nFaultClasss: 0 No Fault 1 Warning 2 Fault
+
+private:
+    void * mpimpl;
+};
+}
+
+#endif // IVFAULT_H

+ 25 - 0
include/ivgrpc.pri

@@ -0,0 +1,25 @@
+
+
+
+INCLUDEPATH += $$PWD/../thirdpartylib/grpc/include
+
+
+contains(QMAKE_HOST.arch, aarch64){
+    LIBS += -L$$PWD/../thirdpartylib/grpc/lib_aarch64
+}else{
+    LIBS += -L$$PWD/../thirdpartylib/grpc/lib_amd64
+}
+
+
+win32: LIBS += -L$$PWD/../thirdpartylib/grpc/lib_win
+LIBS += -lgrpc++_unsecure -lgrpc++_reflection -lgrpc_unsecure -lgpr -lupb -laddress_sorting  \
+        -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased  \
+        -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_str_format_internal \
+        -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal \
+        -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone \
+        -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 \
+        -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity \
+        -labsl_dynamic_annotations
+
+win32: LIBS +=  -lcares -lwsock32 -lws2_32 -lzlibstatic
+

+ 40 - 0
include/ivlog.h

@@ -0,0 +1,40 @@
+#ifndef IVLOG_H
+#define IVLOG_H
+
+
+#include <QtCore/qglobal.h>
+
+#include <stdarg.h>
+
+#if defined(IVLOG_LIBRARY)
+#  define IVLOGSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define IVLOGSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+namespace iv {
+class IVLOGSHARED_EXPORT Ivlog
+{
+
+public:
+    Ivlog(const char * strmodulename);
+    ~Ivlog();
+    void verbose(const char * str,...);
+    void debug(const char * str,...);
+    void info(const char * str,...);
+    void warn(const char * str,...);
+    void error(const char * str,...);
+
+    void verbose(const char * strtag,const char * str,...);
+    void debug(const char * strtag,const char * str,...);
+    void info(const char * strtag,const char * str,...);
+    void warn(const char * strtag,const char * str,...);
+    void error(const char * strtag,const char * str,...);
+
+private:
+    void * mpimpl;
+};
+}
+
+
+#endif // IVLOG_H

+ 11 - 0
include/ivopencv.pri

@@ -0,0 +1,11 @@
+
+unix:INCLUDEPATH += /opt/ros/kinetic/include/opencv-3.3.1-dev
+unix:INCLUDEPATH += /usr/include/opencv4
+unix:LIBS += -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_imgcodecs -lopencv_video -lopencv_videoio -lpthread  #-lopencv_shape
+
+
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/opencv/include
+
+win32: LIBS += -L$$PWD/../thirdpartylib/opencv/lib -lopencv_imgproc451.dll -lopencv_highgui451.dll  -lopencv_imgcodecs451.dll -lopencv_video451.dll -lopencv_videoio451.dll   -lopencv_core451.dll
+
+win32: LIBS += -L$$PWD/../thirdpartylib/opencv/lib  -lopencv_core451.dll # -lzlib   #-llibwebp -llibpng  -llibjpeg-turbo -llibopenjp2 -llibtiff  -lIlmImf

+ 8 - 0
include/ivpcl.pri

@@ -0,0 +1,8 @@
+
+
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/eigen
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/pcl/pcl-1.8
+
+unix:INCLUDEPATH += /usr/include/eigen3
+unix:INCLUDEPATH += /usr/include/pcl-1.7
+unix:INCLUDEPATH += /usr/include/pcl-1.8

+ 14 - 0
include/ivprotobuf.pri

@@ -0,0 +1,14 @@
+
+message($$QMAKE_HOST.version_string)
+
+##if 16.04, compile protobuf 3.13 and make install. and use static lib.
+contains($$QMAKE_HOST.version_string,16.04){
+    unix:LIBS += -L/home/yuchuli/soft/protobuf/cmake/build
+    message("ubuntu 16.04")
+}
+
+unix:LIBS +=  -lprotobuf
+
+
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/protobuf/src
+win32:LIBS += -L$$PWD/../thirdpartylib/protobuf/lib -lprotobuf

+ 9 - 0
include/ivversion.h

@@ -0,0 +1,9 @@
+
+#define VERSION "1.0.0-develop"
+
+
+#include <iostream>
+
+#define showversion(modulename) do{std::cout<<"ADC IV Version:"<<VERSION<<" | Module name: "<<modulename<<" | Build Time: "<<__DATE__<<" "<<__TIME__<<std::endl;}while(0);
+
+

+ 7 - 0
include/ivyaml-cpp.pri

@@ -0,0 +1,7 @@
+
+
+unix: LIBS += -lyaml-cpp
+
+win32:INCLUDEPATH += $$PWD/../thirdpartylib/yaml-cpp/include
+win32: LIBS += -L$$PWD/../thirdpartylib/yaml-cpp/lib -lyaml-cpp
+

+ 40 - 0
include/modulecomm.h

@@ -0,0 +1,40 @@
+#ifndef MODULECOMM_H
+#define MODULECOMM_H
+
+#include <QtCore/qglobal.h>
+#include <QDateTime>
+
+#include <functional>
+
+#if defined(MODULECOMM_LIBRARY)
+#  define MODULECOMMSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define MODULECOMMSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+
+
+//#include <iostream>
+//#include <thread>
+
+//using namespace std::placeholders;
+typedef std::function<void(const char * ,const unsigned int , const unsigned int , QDateTime * ,const char *)> ModuleFun;
+typedef void (* SMCallBack)(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
+
+namespace iv {
+namespace modulecomm {
+void * MODULECOMMSHARED_EXPORT RegisterSend(const char * strcommname,const unsigned int nBufSize,const unsigned int nMsgBufCount);
+void * MODULECOMMSHARED_EXPORT RegisterRecv(const char * strcommname,SMCallBack pCall);
+void * MODULECOMMSHARED_EXPORT RegisterRecvPlus(const char * strcommname,ModuleFun xFun);
+void MODULECOMMSHARED_EXPORT ModuleSendMsg(void * pHandle,const char * strdata,const unsigned int nDataLen);
+void MODULECOMMSHARED_EXPORT Unregister(void * pHandle);
+void MODULECOMMSHARED_EXPORT PauseComm(void * pHandle);
+void MODULECOMMSHARED_EXPORT ContintuComm(void * pHandle);
+
+}
+
+}
+
+
+
+#endif 

+ 80 - 0
include/time_manager.h

@@ -0,0 +1,80 @@
+#ifndef TIME_MANAGER_H
+#define TIME_MANAGER_H
+#include "radarobjectarray.pb.h"
+//#include "cameraobjectarray.pb.h"
+#include "objectarray.pb.h"
+#include "obstacles.pb.h"
+#include "worker.h"
+#include <memory>
+#include <chrono>
+#include <mutex>
+#include <algorithm>
+
+
+namespace iv {
+
+class TimeManager: public Worker
+{
+public:
+    typedef  iv::radar::radarobjectarray RadarDataType;
+    typedef  iv::lidar::objectarray LidarDataType;
+//    typedef  iv::vision::cameraobjectarray CameraDataType;
+    typedef  iv::vision::ObstacleInfo VisionDataType;
+    typedef  std::chrono::system_clock::time_point TimeType;
+//    typedef  std::function<void(RadarDataType&, LidarDataType&,CameraDataType&)> DataCallback;
+
+//    typedef  std::function<void(RadarDataType&,CameraDataType&)> RVCallback;
+
+     typedef  std::function<void(RadarDataType&, LidarDataType&,VisionDataType&)> DataCallback;
+
+     typedef  std::function<void(RadarDataType&,VisionDataType&)> RVCallback;
+
+
+    TimeManager(const float hz);
+
+    void SetDataCallback(DataCallback rlvcallback);
+    void SetRVCallback(RVCallback rvcallback);
+
+    void DoWork();
+
+    void CacheRadarData(const iv::radar::radarobjectarray& radar_object_array);
+    void CacheLidarData(const iv::lidar::objectarray& lidar_object_array);
+//    void CacheCameraData(const iv::vision::cameraobjectarray& camera_object_array);
+    void CacheCameraData(const iv::vision::ObstacleInfo& vision_object_array);
+
+    void GetDataRLV(void);
+
+    void GetDataRV(void);
+
+private:
+    std::mutex mutex_data_;
+
+
+private:
+    ///cache data
+    std::vector<iv::lidar::objectarray> lidar_cache_;
+    std::vector<iv::radar::radarobjectarray> radar_cache_;
+    std::vector<iv::vision::ObstacleInfo> vision_cache_;
+
+private:
+    iv::lidar::objectarray lidar_objects_;
+    iv::radar::radarobjectarray radar_objects_;
+    iv::vision::ObstacleInfo vision_objects_;
+
+
+static const int lidarCacheSize = 10;
+static const int radarCacheSzie = 30;
+static const int cameraCacheSzie = 20;
+
+private:
+    DataCallback data_call_back_;
+    RVCallback  rv_call_back_;
+
+
+};
+
+}
+
+
+
+#endif // TIME_MANAGER_H

+ 26 - 0
include/timer.h

@@ -0,0 +1,26 @@
+#ifndef TIMER_H
+#define TIMER_H
+#include <chrono>
+#include <thread>
+
+namespace iv {
+
+class Timer{
+
+public:
+    Timer(const float& hz);
+
+    void Start();
+    void Stop();
+
+private:
+    std::chrono::duration<float> duration_;
+    std::chrono::system_clock::time_point start_;
+    std::chrono::duration<float> elapsed_;
+
+};
+
+}
+
+
+#endif // TIMER_H

+ 44 - 0
include/worker.h

@@ -0,0 +1,44 @@
+#ifndef WORKER_H
+#define WORKER_H
+
+#include "timer.h"
+#include <iostream>
+namespace iv {
+
+class Worker
+{
+
+public:
+    enum
+    {
+        WS_INIT         = 0x001,
+        WS_RUN          = 0x002,
+        WS_SUSPEND      = 0x003,
+        WS_TERMINATE    = 0x004,
+    };
+
+public:
+    Worker(float hz=20);
+
+    virtual ~Worker();
+
+    virtual void DoWork() = 0;
+
+    void Run();
+
+    void Suspend();
+
+    void Terminate();
+
+protected:
+    void MainThread();
+
+protected:
+    std::thread main_thread_;
+    Timer timer_;
+    std::uint16_t worker_state_;
+};
+
+}
+
+#endif // WORKER_H

+ 35 - 0
include/xmlparam.h

@@ -0,0 +1,35 @@
+#ifndef XMLPARAM_H
+#define XMLPARAM_H
+
+
+#include <QtCore/qglobal.h>
+
+#include <string>
+
+#if defined(XMLPARAM_LIBRARY)
+#  define XMLPARAMSHARED_EXPORT Q_DECL_EXPORT
+#else
+#  define XMLPARAMSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+namespace iv {
+namespace xmlparam {
+
+class XMLPARAMSHARED_EXPORT Xmlparam
+{
+
+public:
+    Xmlparam(std::string filepath);
+    std::string GetParam(std::string paramname,std::string defaultvalue);
+
+    QString GetVersion();
+private:
+    int * mpx;
+
+};
+}
+
+}
+
+
+#endif // XMLPARAM_H

+ 22 - 0
sedrp.sh

@@ -0,0 +1,22 @@
+if [ "$#" -lt 1 ]; then
+echo "没有输入"
+echo "$1"
+exit
+fi
+
+HOSTQTLIB='/opt/qt/5.10.1/gcc_64/lib'  #当前qt环境的lib目录
+RPATH='/home/root/ADS/lib'  #运行依赖库的路径,目标板的qt库配置到该路径
+DEVICEQTLIB='/home/yuchuli/tem/qtbase-everywhere-src-5.10.1/lib'  #qt的lib路径
+gccdir='/home/yuchuli/armgcc/surround_os/gcc-linaro-6.3.1/bin/aarch64-linux-gnu-gcc' #交叉编译的gcc路径
+gppdir='/home/yuchuli/armgcc/surround_os/gcc-linaro-6.3.1/bin/aarch64-linux-gnu-g++' #交叉编译的g++路径
+protoincdir='/home/yuchuli/tem/proto/protobuf-3.0.2/src'  #交叉编译的protobuf路径
+yamlinc='/home/yuchuli/tem/yaml-cpp/include' #yaml include路径
+yamllib='/home/yuchuli/tem/yaml-cpp/build'   #ymal lib路径
+
+sed -i "s:CC            = gcc:CC            = ${gccdir}:g" $1
+sed -i "s:CXX           = g++:CXX           = ${gppdir}:g" $1
+sed -i "s:LINK          = g++:LINK          = ${gppdir}:g" $1
+sed -i "s:INCPATH       =:INCPATH       =-I${protoincdir} -I${yamlinc} :g" $1
+sed -i "s:-rpath,${HOSTQTLIB}:-rpath,${RPATH}:g" $1
+sed -i "s:LIBS          = :LIBS          = -L${DEVICEQTLIB} -L${yamllib} :g" $1
+

+ 32 - 0
sh/GE3/ADS_decision.xml

@@ -0,0 +1,32 @@
+<xml>	
+	<node name="ADCIntelligentVehicle-Replay">
+		<param name="vin" value="LMWHP1S28J1005878" />
+		<param name="iccid" value="898600MFSSYYG1234018" />
+		<param name="vehType" value="ge3" />
+		<param name="server" value="60.247.58.116" />
+		<param name="port" value="5600" />
+		<param name="id" value="1" />
+		<param name="group" value="true1" />
+		<param name="roadmode0" value="33" />
+		<param name="roadmode5" value="6" />
+		<param name="roadmode11" value="6" />
+		<param name="roadmode13" value="8" />
+		<param name="roadmode14" value="11" />
+		<param name="roadmode15" value="11" />
+		<param name="roadmode16" value="8" />
+		<param name="roadmode17" value="8" />
+		<param name="roadmode18" value="8" />
+		<param name="zhuchetime" value="10" />
+		<param name="epsoff" value="0" />
+                <param name="parklat" value="39.1364494" />
+                <param name="parklng" value="117.0868970" />
+                <param name="parkheading" value="347.6" />
+		<param name="parktype" value="0" />
+		<param name="lightlon" value="118.0866011"/>
+		<param name="lightlat" value="39.1362522" />
+		<param name="LidarRotation" value="95" />
+		<param name="LidarRangeUnit" value="5.0" />
+		<param name="speed" value="false" />
+	</node>
+</xml>
+

+ 22 - 0
sh/GE3/IVSysMan.xml

@@ -0,0 +1,22 @@
+<xml>	
+
+	<module app="driver_can_kvaser" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Driver"/>
+	<module app="driver_gps_hcp2" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Driver"/>
+	<module app="driver_radio_p900" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Driver"/>
+	<module app="driver_map_trace" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Driver"/>
+        <module app="driver_lidar_rs16" dir="/home/a/code/ADS-formation/modularization/deploy/app" args="-r 90" autostart="true"  group="Driver"/>
+	<module app="driver_map_xodrload" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Driver"/>	
+	<module app="detection_radar_delphi_esr" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Detection"/>
+        <module app="detection_chassis" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Detection"/>
+        <module app="controller_ge3" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Control"/>
+	<module app="decition_brain" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Control"/>
+	<module app="detection_lidar_grid" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Detection"/>
+	<module app="view_gps" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Tool"/>
+	<module app="view_radar" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Tool"/>
+	<module app="ivmapmake" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Tool"/>
+	<module app="view_ivlog" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Tool"/>
+	<module app="ui_ads_hmi" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Tool"/>
+	<module app="adciv_record" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Tool"/>
+	<module app="tool_xodrobj" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="false"  group="Tool"/>
+	<module app="ivlog_record" dir="/home/a/code/ADS-formation/modularization/deploy/app" args=" " autostart="true"  group="Tool"/>
+</xml>

+ 21 - 0
sh/GE3/adciv_record.xml

@@ -0,0 +1,21 @@
+<xml>	
+	<node name="bqev_record">
+		<param name="savedir" value="/home/a/ivd" />
+		<param name="spacekeep(M)" value="20000" />
+		<param name="filemax" value = "10" />
+		<param name="filesizelim(M)" value="20000" />
+		<param name="MEMNAME001" value="usbpic" />
+		<param name="MEMNAME002" value="brainstate" />
+		<param name="MEMNAME003" value="deciton" />
+		<param name="MEMNAME004" value="hcp2_gpsimu" />
+		<param name="MEMNAME005" value="hmi" />
+		<param name="MEMNAME006" value="platform" />
+		<param name="MEMNAME007" value="radar" />
+		<param name="MEMNAME008" value="canstate" />
+<!--		<param name="MEMNAME009" value="lidar_pc" />-->
+		<param name="MEMNAME009" value="lidar_obs" />
+		<param name="MEMNAME010" value="chassis" />
+		<param name="MEMNAME011" value="cansend" />
+
+	</node>
+</xml>

+ 15 - 0
sh/GE3/adciv_replay.xml

@@ -0,0 +1,15 @@
+<xml>	
+	<node name="bqev_replay">
+		<param name="MEMNAME001" value="usbpic" />
+		<param name="MEMNAME002" value="vehiclestate" />
+		<param name="MEMNAME003" value="decition" />
+		<param name="MEMNAME004" value="gpsimu" />
+		<param name="MEMNAME005" value="hmi" />
+		<param name="MEMNAME006" value="platform" />
+		<param name="MEMNAME007" value="radar" />
+		<param name="MEMNAME008" value="canstate" />
+<!--		<param name="MEMNAME009" value="lidar_pc" />-->
+		<param name="MEMNAME009" value="lidar_obs" />
+		<param name="MEMNAME010" value="cansend" />
+	</node>
+</xml>

+ 12 - 0
sh/GE3/addboost.sh

@@ -0,0 +1,12 @@
+if [ "$#" -lt 1 ]; then
+echo "没有输入"
+echo "$1"
+exit
+fi
+
+BOOSTLIB='/home/yuchuli/tem/boost_1_69_0/stage/lib'  #BOOST LIB路径
+BOOSTINC='/home/yuchuli/tem/boost_1_69_0'  #BOOST INCLUDE 路径
+
+sed -i "s:INCPATH       =:INCPATH       =-I${BOOSTINC} :g" $1
+sed -i "s:LIBS          = :LIBS          = -L${BOOSTLIB} :g" $1
+

+ 57 - 0
sh/GE3/auto_clean.sh

@@ -0,0 +1,57 @@
+#!/bin/sh
+
+echo "********************************"
+echo "* clean QT xxx.pro.user* files *"
+echo "********************************"
+
+files=`find . -name "*.user*"`
+for file in $files
+do
+	echo $file
+	rm $file
+done
+echo "done"
+
+#echo "********************************"
+#echo "* clean *.so files              *"
+#echo "********************************"
+
+#files=`find . -name "*.so"`
+#for file in $files
+#do
+#	echo $file
+#	rm $file
+#done
+#echo "done"
+
+
+echo "********************************"
+echo "* clean protobuf build files   *"
+echo "********************************"
+
+rm -f ./src/include/msgtype/*
+echo "done"
+
+echo "********************************"
+echo "* clean binary files *"
+echo "********************************"
+
+rm -rf ./bin
+rm -rf ./deploy/app
+echo "done"
+
+
+echo "********************************"
+echo "* clean QT build folder *"
+echo "********************************"
+
+folders=`find . -name "build-*" -type d`
+for folder in $folders
+do
+	echo $folder
+	rm -rf $folder
+done
+echo "done"
+
+echo "complete !"
+

+ 82 - 0
sh/GE3/autodeploy.sh

@@ -0,0 +1,82 @@
+PRO_DIR=`pwd`
+CONFIG_IVSysMan="IVSysMan_Ge3.xml"
+
+check_result=`whereis patchelf | awk '{print $2}'`
+if [ ! $check_result ];then
+    echo -e "\e[31m no found patchelf, Plz install patchelf first\e[0m"
+    exit 1
+fi
+
+app_name=(
+driver_lidar_rs16
+#driver_lidar_vlp16
+driver_gps_hcp2
+driver_radio_p900
+#driver_can_nvidia_agx
+driver_can_kvaser
+#driver_can_vci
+driver_map_trace
+detection_radar_delphi_esr
+detection_lidar_grid
+#view_pointcloud
+view_gps
+view_rawcan
+view_radar
+IVSysMan
+ivmapmake
+view_ivlog
+tool_querymsg
+detection_chassis
+ui_ads_hmi
+decition_brain
+#decition_brain_ge3
+controller_ge3
+driver_map_xodrload
+tool_xodrobj
+ivlog_record
+adciv_record
+)
+
+for x in ${app_name[@]}
+do
+	echo "deploy $x"
+	cp ./bin/${x} ./
+	./deploy.sh $x
+	if [ "$?" == 1 ];then
+		echo "build $x faile"
+		exit 1
+	fi
+	rm ${x}
+done
+
+lib_name=(
+	libmodulecomm.so
+	libndt_cpu.so
+	libxmlparam.so
+	libivfault.so
+	libivlog.so
+	libplatformif.so
+	libivexit.so
+)
+
+for x in ${lib_name[@]}
+do
+	echo "link lib $x"
+	patchelf --set-rpath '$ORIGIN' ./bin/$x
+	if [ "$?" != 0 ];then
+		echo -e "\e[31m patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
+		exit 1
+	fi
+done
+
+echo "creat IVSysMan.xml"
+cp ./other/$CONFIG_IVSysMan ./deploy/app/IVSysMan.xml
+cp ./other/ADS_decision.xml ./deploy/app/ADS_decision.xml
+sed -i "s|xxxxxx|$PRO_DIR/deploy/app|g" ./deploy/app/IVSysMan.xml
+
+cp ./bin/*.so ./deploy/app/lib/
+
+echo ""
+echo "***************"
+echo "***  done!  ***"
+echo "***************"

+ 226 - 0
sh/GE3/autogen.sh

@@ -0,0 +1,226 @@
+
+qtmake="/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake"
+#qtmake="/opt/Qt5.11.2/5.11.2/gcc_64/bin/qmake"
+show_error=$1
+check_result()
+{
+    if [ "$1" != 0 -a "$show_error" == "s" ];then
+		echo -e "\e[33m*************************************************\e[0m"
+        echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
+		echo -e "\e[33m*************************************************\e[0m"
+ 	    exit 1
+	fi
+}
+
+MAKEOPT=-j8
+
+mkdir bin
+
+cd src/include/proto
+sh ./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivexit/
+$qtmake ivexit.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivexit.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ndt_cpu/
+$qtmake ndt_cpu.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libndt_cpu.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivlog/
+$qtmake ivlog.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivlog.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+make $MAKEOPT
+check_result $?
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+controller_app_name=(
+	controller_ge3
+	controller_vv7
+)
+
+for x in ${controller_app_name[@]}
+do
+	cd src/controller/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+decition_app_name=(
+	decition_brain
+	#decition_brain_ge3
+	#decition_brain_qingyuan
+	#decition_brain_vv7
+)
+
+for x in ${decition_app_name[@]}
+do
+	cd src/decition/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+driver_app_name=(
+	driver_lidar_rs16
+#	driver_lidar_vlp16
+	driver_gps_hcp2
+	#driver_gps_ins550d
+	#driver_can_nvidia_agx
+	driver_can_kvaser
+	driver_radio_p900
+#	driver_can_vci
+	driver_map_trace
+	driver_map_xodrload
+)
+
+for x in ${driver_app_name[@]}
+do
+	cd src/driver/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+detect_app_name=(
+	#detection_radar_conti_sr308
+	detection_radar_delphi_esr
+	detection_chassis
+	detection_lidar_grid
+)
+
+for x in ${detect_app_name[@]}
+do
+	cd src/detection/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+tool_app_name=(
+	#view_pointcloud
+	view_gps
+	view_rawcan
+	view_radar
+	IVSysMan
+	ivmapmake
+	view_ivlog
+	tool_querymsg
+	tool_xodrobj
+	ivlog_record
+	adciv_record
+)
+
+for x in ${tool_app_name[@]}
+do
+	cd src/tool/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+
+ui_app_name=(
+	ui_ads_hmi
+)
+
+for x in ${ui_app_name[@]}
+do
+	cd src/ui/${x}/
+	$qtmake ${x}.pro
+	make $MAKEOPT
+	check_result $?
+	make clean
+	cp ${x} ./../../../bin/
+	rm Makefile
+	rm .qmake.stash
+	rm ${x}
+	cd ../../../
+done
+

+ 157 - 0
sh/GE3/autogen_cross.sh

@@ -0,0 +1,157 @@
+
+qtmake="/opt/qt/5.10.1/gcc_64/bin/qmake"
+
+MAKEOPT=-j8
+
+cd src/include/proto
+./protomake.sh
+cd ../../../
+
+cd src/common/modulecomm/
+$qtmake modulecomm.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libmodulecomm.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/xmlparam/
+$qtmake xmlparam.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libxmlparam.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+
+cd src/common/ivlog/
+$qtmake ivlog.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivlog.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/ivfault/
+$qtmake ivfault.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libivfault.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+cd src/common/platformif/
+$qtmake platformif.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp libplatformif.so ./../../../bin/
+rm Makefile
+rm .qmake.stash
+cd ../../../
+
+controller_app_name=(
+controller_ge3
+)
+
+for x in ${controller_app_name[@]}
+do
+cd src/controller/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+decition_app_name=(
+decition_brain_ge3
+)
+
+for x in ${decition_app_name[@]}
+do
+cd src/decition/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+driver_app_name=(
+driver_can_nvidia_agx
+driver_map_trace
+)
+
+for x in ${driver_app_name[@]}
+do
+cd src/driver/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+./../../../addboost.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+detect_app_name=(
+detection_radar_conti_sr308
+)
+
+for x in ${detect_app_name[@]}
+do
+cd src/detection/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+
+tool_app_name=(
+ivlog_record
+testcross1
+testcross2
+testcrossyaml
+)
+
+for x in ${tool_app_name[@]}
+do
+cd src/tool/${x}/
+$qtmake ${x}.pro
+./../../../sedrp.sh Makefile
+make $MAKEOPT
+make clean
+cp ${x} ./../../../bin/
+rm Makefile
+rm .qmake.stash
+rm ${x}
+cd ../../../
+done
+

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů