国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

中企動力做網(wǎng)站怎么樣國家高新技術(shù)企業(yè)查詢

中企動力做網(wǎng)站怎么樣,國家高新技術(shù)企業(yè)查詢,建立音樂網(wǎng)站,廣州做網(wǎng)站信科網(wǎng)絡(luò)寫在前面 最近項目一直用matlab,防止手生整一個回憶工具使用的簡單的pid demo,走一邊流程,包括配工程debug看結(jié)果,復(fù)用之前記錄的配置見我的bloghttps://blog.csdn.net/weixin_46479223/article/details/135082867?csdn_share_t…

寫在前面

最近項目一直用matlab,防止手生整一個回憶工具使用的簡單的pid demo,走一邊流程,包括配工程debug看結(jié)果,復(fù)用之前記錄的配置見我的bloghttps://blog.csdn.net/weixin_46479223/article/details/135082867?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135082867%22%2C%22source%22%3A%22weixin_46479223%22%7D。visual studio在這方面感覺比vscode 方便不少

使用說明,不基于內(nèi)容是什么,主要是配置好基本內(nèi)容可以快速編譯打印驗證,或者配置visualstudio,單個文件的話可以使用在線ide頁面https://godbolt.org/

結(jié)構(gòu)

在這里插入圖片描述

cmakelist

cmake_minimum_required(VERSION 3.14.1)
project(project_PIDControllerDemo)
set( CMAKE_CXX_STANDARD 11 )
set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( THREADS_PREFER_PTHREAD_FLAG ON )function(include_sub_directories_recursively root_dir)if (IS_DIRECTORY ${root_dir})include_directories(${root_dir})file(GLOB children RELATIVE ${root_dir} ${root_dir}/*)foreach(child ${children})if (IS_DIRECTORY ${root_dir}/${child})include_sub_directories_recursively(${root_dir}/${child})endif()endforeach()endif()
endfunction()function(aux_source_directory_recursively root_dir var_name)if(IS_DIRECTORY ${root_dir})aux_source_directory(${root_dir} TMP_SRC_LIST)set(${var_name} ${${var_name}} ${TMP_SRC_LIST} PARENT_SCOPE)file(GLOB children RELATIVE ${root_dir} ${root_dir}/*)foreach(child ${children})if(IS_DIRECTORY ${root_dir}/${child})aux_source_directory_recursively(${root_dir}/${child} ${var_name}) endif()endforeach()endif()
endfunction()find_package(glog REQUIRED)
find_package(Eigen3 REQUIRED)
#find_package(osqp REQUIRED )
find_package(OsqpEigen REQUIRED)
find_package(yaml-cpp REQUIRED)Set(GLOG_INCLUDE_DIRS "/usr/include/glog/")
Set(GLOG_LIBRARIES "/usr/lib/x86_64-linux-gnu/libglog.so")
#Set(GLOG_LIBRARIES "/usr/local/lib/libglog.so")# message(STATUS "GLOG_INCLUDE_DIRS: ${GLOG_INCLUDE_DIR}")
# message(STATUS "GLOG_LIBRARIES: ${GLOG_LIBRARIES}")
# message(STATUS "EIGEN3_INCLUDE_DIR: ${EIGEN3_INCLUDE_DIR}")
# message(STATUS "EIGEN3_LIBRARIES: ${EIGEN3_LIBRARIES}")
# message(STATUS "osqp_INCLUDE_DIR: ${osqp_INCLUDE_DIR}")
# message(STATUS "osqp_LIBRARIES: ${osqp_LIBRARIES}")set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_INCLUDE_CURRENT_DIR ON)# aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC_LIST)aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/. SRC_LIST)aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/commen/. SRC_LIST)#aux_source_directory_recursively(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/libs)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/src)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/inc)##############################debug start##############################
get_property(include_dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)foreach(dir ${include_dirs})message("Include directory: ${dir}")
endforeach()message("Source files:")
foreach(file IN LISTS SRC_LIST)message("  ${file}")
endforeach()
#################################debug end####################################include_directories(${GLOG_INCLUDE_DIRS})
include_directories(${EIGEN3_INCLUDE_DIR})add_executable(${PROJECT_NAME} ${SRC_LIST})
#add_library(${PROJECT_NAME} STATIC ${SRC_LIST}) # temp use 
target_include_directories(${PROJECT_NAME} PRIVATE ${GLOG_INCLUDE_DIRS})
#target_include_directories(${PROJECT_NAME} PRIVATE ${OSQP_INCLUDE_DIRS})
#target_link_libraries(${PROJECT_NAME} OsqpEigen::OsqpEigen)
target_link_libraries(${PROJECT_NAME} PRIVATE ${GLOG_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PRIVATE ${EIGEN3_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PRIVATE yaml-cpp)# link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cpp/)# for all 
# target_link_libraries(${PROJECT_NAME} PRIVATE libyaml-cpp.a)
#target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cD/libyaml-cD.a)
#target_link_libraries(${PROJECT_NAME} PRIVATE osqp::osqp)
#####################################unit test ###################################
# add_executable(unit_test_pathFW ${SRC_LIST}) 
# target_link_libraries( unit_test_pathFW
#                         ${GLOG_LIBRARIES}
#                         # ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cD/libyaml-cD.a
#                         ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cD/libyaml-cD.a
#                         # yaml-cD
#                         )
#####################################unit test end#################################

c_cpp_properties.json

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","${workspaceFolder}/inc","/usr/include/**"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c17","cppStandard": "gnu++14","intelliSenseMode": "linux-gcc-x64"}],"version": 4
}

launch.json

{// 使用 IntelliSense 了解相關(guān)屬性。 // 懸停以查看現(xiàn)有屬性的描述。// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 啟動","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/project_PIDControllerDemo","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "為 gdb 啟用整齊打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "將反匯編風格設(shè)置為 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

pid.h


# ifndef _PID_H_
# define _PID_H_#include <cmath>
#include <algorithm># define RUNCYCLE 0.02class PID{public:PID():  ki_(0),  kp_(0), kd_(0){}PID(const float&  KI,const float&  KP,const float& KD):  ki_( KI),  kp_( KP)
, kd_(KD){}PID(const PID& pid)=delete;~PID(){}void updatePos();void calError(const float & targetPos);float getRes();private:float ki_ ;float  kp_;float kd_;float error_ {0.f};float pos_ {0.f}; float res_ {0.f}; 
};# endif

pid.cc

#include "pid.h"using namespace std;void PID:: calError( const float & targetPos ){float error_i=0.f,error_d=0.f,error_p=0.f; static float error_last=0;error_p=targetPos-pos_;error_i=RUNCYCLE*error_p;error_d=(error_p-error_last)/RUNCYCLE;if (error_p*error_p<0){error_i=0;}error_i=min(error_i,3.f);error_i=max(error_i,-3.f);error_last=error_p;res_= ki_*error_i+kp_*error_p+kd_*error_d;}void PID:: updatePos(){pos_+=res_*RUNCYCLE;}float  PID:: getRes(){return pos_;}

main.cc

# include "pid.h"
#include <glog/logging.h>int main(int argc, char* argv[]){google::InitGoogleLogging(argv[0]);google::SetStderrLogging(google::GLOG_ERROR); FLAGS_colorlogtostderr = true;FLAGS_logtostderr = true; FLAGS_minloglevel = 0;      PID pidUser (0.3f,1.f,0.5f); // user defined parametersint Target=10; // user definedint count=0; // counter LOG(INFO) << "Hello,myPID";while (fabs(Target-pidUser.getRes())>0.1&&count<1000){pidUser.calError(Target);pidUser.updatePos();count++;LOG(INFO) << "Target: "<<Target<< "Current pos: "<< pidUser.getRes();}LOG(INFO) << "End at "<< count<< "Times"; google::ShutdownGoogleLogging();
}

結(jié)果

在這里插入圖片描述
用重定向 放入excel中畫圖展示如下
在這里插入圖片描述

如果練習使用的電腦 只有g(shù)cc 沒有cmake的話,臨時練習方案

對于我的項目在項目主文件夾下
使用gcc ./src/main.cc ./src/pid.cc -I./inc -o Test

以下擴展來自于gpt:
Q:如果想使用eigen庫 和osqp庫 用cpp14標準 編譯模式為debug 編譯結(jié)果為動態(tài)庫或者靜態(tài)庫 該怎么設(shè)置,比如在gcc ./src/main.cc ./src/pid.cc -I./inc -o Test 擴展該怎么做 而不是使用cmakelist
A:如下

# 編譯并生成可執(zhí)行文件
gcc ./src/main.cc ./src/pid.cc -I./inc -o Test -std=c++14 -g -lYourOSQPLibrary -lYourEigenLibrary# 或者編譯并生成動態(tài)庫
gcc -shared -fPIC ./src/main.cc ./src/pid.cc -I./inc -o libYourLibraryName.so -std=c++14 -g -lYourOSQPLibrary -lYourEigenLibrary

或者編譯并生成靜態(tài)庫

gcc -c ./src/main.cc ./src/pid.cc -I./inc -o YourObjectFile.o -std=c++14 -g
ar rcs libYourLibraryName.a YourObjectFile.o

等效于cmakelist如下:

cmake_minimum_required(VERSION 3.10)project(YourProjectName)# 設(shè)置 C++ 標準
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)# 查找 Eigen 庫
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})# 查找 OSQP 庫
find_package(osqp REQUIRED)
include_directories(${OSQP_INCLUDE_DIRS})# 設(shè)置編譯模式為 Debug
set(CMAKE_BUILD_TYPE Debug)# 生成動態(tài)庫
add_library(YourLibraryName SHAREDsrc/your_source_file1.cppsrc/your_source_file2.cpp# 添加其他源文件
)# 或者生成靜態(tài)庫
# add_library(YourLibraryName STATIC
#     src/your_source_file1.cpp
#     src/your_source_file2.cpp
#     # 添加其他源文件
# )# 鏈接 OSQP 和其他可能的庫,例如 Eigen
target_link_libraries(YourLibraryName ${OSQP_LIBRARIES} Eigen3::Eigen)# 可執(zhí)行文件示例
add_executable(YourExecutableNamesrc/main.cpp# 添加其他源文件
)# 鏈接生成的庫
target_link_libraries(YourExecutableName YourLibraryName)
http://m.aloenet.com.cn/news/37533.html

相關(guān)文章:

  • 高唐建筑公司網(wǎng)站seo關(guān)鍵詞優(yōu)化要多少錢
  • 紹興做網(wǎng)站哪家好在線營銷推廣
  • 風機網(wǎng)站怎么做南寧seo推廣服務(wù)
  • 企業(yè)門戶網(wǎng)站開發(fā)平臺的設(shè)計與實現(xiàn)櫻桃電視劇西瓜視頻在線觀看
  • django做的網(wǎng)站源碼百度網(wǎng)站怎么優(yōu)化排名
  • 網(wǎng)站建設(shè) 順德河南網(wǎng)站建設(shè)公司哪家好
  • 眉山政府網(wǎng)站建設(shè)seo網(wǎng)站推廣優(yōu)化
  • 如何查詢網(wǎng)站的建站工具seo門戶網(wǎng)站
  • 溫州網(wǎng)站建設(shè)成功案例山西seo基礎(chǔ)教程
  • 學(xué)院網(wǎng)站的作用中國疫情最新數(shù)據(jù)
  • 觸屏版網(wǎng)站開發(fā)樣式互聯(lián)網(wǎng)推廣與營銷
  • 沒有網(wǎng)站可以做淘寶客嗎搜索引擎的設(shè)計與實現(xiàn)
  • 做招商類型的網(wǎng)站怎么制作網(wǎng)站二維碼
  • 江西省住房和城鄉(xiāng)建設(shè)部網(wǎng)站市場營銷推廣方案
  • 中國做國外的網(wǎng)站廣東疫情最新消息今天又封了
  • 做網(wǎng)站主流軟件是php嗎什么是淘寶seo
  • 公司做網(wǎng)站推廣的價格鄭州網(wǎng)絡(luò)推廣方案
  • 怎樣登陸wordpress短視頻seo詢盤獲客系統(tǒng)軟件
  • 遵義做網(wǎng)站哪個公司最好百度推廣優(yōu)化怎么做的
  • 網(wǎng)站建設(shè)內(nèi)容錄入論文百度如何收錄網(wǎng)站
  • b站破解2023免費版下載抖音企業(yè)推廣
  • 做電商網(wǎng)站價錢16種營銷模型
  • 怎樣做淘寶網(wǎng)站建設(shè)電商網(wǎng)站平臺搭建
  • 做網(wǎng)站 當站長紹興seo排名外包
  • 給政府做網(wǎng)站怎么報價深圳網(wǎng)站建設(shè)服務(wù)
  • 青島網(wǎng)站站長之家權(quán)重查詢
  • 網(wǎng)站會員功能長春seo排名
  • 用vue框架做的網(wǎng)站網(wǎng)站建設(shè)網(wǎng)站
  • 網(wǎng)站開發(fā)技術(shù)路線網(wǎng)站制作流程和方法
  • 關(guān)于政府補貼企業(yè)做網(wǎng)站的事免費推廣引流平臺