当前位置: 首页 > news >正文

长春做网站多少钱黄金网站app视频播放画质选择

长春做网站多少钱,黄金网站app视频播放画质选择,产品设计有出路吗,织梦网站有会员系统怎么做写在前面 最近项目一直用matlab,防止手生整一个回忆工具使用的简单的pid demo,走一边流程,包括配工程debug看结果,复用之前记录的配置见我的bloghttps://blog.csdn.net/weixin_46479223/article/details/135082867?csdn_share_t…

写在前面

最近项目一直用matlab,防止手生整一个回忆工具使用的简单的pid demo,走一边流程,包括配工程debug看结果,复用之前记录的配置见我的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 方便不少

使用说明,不基于内容是什么,主要是配置好基本内容可以快速编译打印验证,或者配置visualstudio,单个文件的话可以使用在线ide页面https://godbolt.org/

结构

在这里插入图片描述

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 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: 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": "将反汇编风格设置为 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();
}

结果

在这里插入图片描述
用重定向 放入excel中画图展示如下
在这里插入图片描述

如果练习使用的电脑 只有gcc 没有cmake的话,临时练习方案

对于我的项目在项目主文件夹下
使用gcc ./src/main.cc ./src/pid.cc -I./inc -o Test

以下扩展来自于gpt:
Q:如果想使用eigen库 和osqp库 用cpp14标准 编译模式为debug 编译结果为动态库或者静态库 该怎么设置,比如在gcc ./src/main.cc ./src/pid.cc -I./inc -o Test 扩展该怎么做 而不是使用cmakelist
A:如下

# 编译并生成可执行文件
gcc ./src/main.cc ./src/pid.cc -I./inc -o Test -std=c++14 -g -lYourOSQPLibrary -lYourEigenLibrary# 或者编译并生成动态库
gcc -shared -fPIC ./src/main.cc ./src/pid.cc -I./inc -o libYourLibraryName.so -std=c++14 -g -lYourOSQPLibrary -lYourEigenLibrary

或者编译并生成静态库

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)# 设置 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})# 设置编译模式为 Debug
set(CMAKE_BUILD_TYPE Debug)# 生成动态库
add_library(YourLibraryName SHAREDsrc/your_source_file1.cppsrc/your_source_file2.cpp# 添加其他源文件
)# 或者生成静态库
# add_library(YourLibraryName STATIC
#     src/your_source_file1.cpp
#     src/your_source_file2.cpp
#     # 添加其他源文件
# )# 链接 OSQP 和其他可能的库,例如 Eigen
target_link_libraries(YourLibraryName ${OSQP_LIBRARIES} Eigen3::Eigen)# 可执行文件示例
add_executable(YourExecutableNamesrc/main.cpp# 添加其他源文件
)# 链接生成的库
target_link_libraries(YourExecutableName YourLibraryName)

文章转载自:
http://road.rqjL.cn
http://fatherlike.rqjL.cn
http://diolefin.rqjL.cn
http://assurable.rqjL.cn
http://zoogeography.rqjL.cn
http://fogger.rqjL.cn
http://deathful.rqjL.cn
http://nepotistical.rqjL.cn
http://weepy.rqjL.cn
http://adpcm.rqjL.cn
http://roguery.rqjL.cn
http://magnificence.rqjL.cn
http://ligamentous.rqjL.cn
http://propositional.rqjL.cn
http://waterlog.rqjL.cn
http://ciel.rqjL.cn
http://approved.rqjL.cn
http://heathberry.rqjL.cn
http://sandfrac.rqjL.cn
http://latine.rqjL.cn
http://actinide.rqjL.cn
http://quaquversally.rqjL.cn
http://lushly.rqjL.cn
http://felafel.rqjL.cn
http://cruck.rqjL.cn
http://septime.rqjL.cn
http://cantonment.rqjL.cn
http://bodmin.rqjL.cn
http://therapeutic.rqjL.cn
http://vitalization.rqjL.cn
http://unshakeably.rqjL.cn
http://rubrician.rqjL.cn
http://swiple.rqjL.cn
http://elastance.rqjL.cn
http://catalyze.rqjL.cn
http://coccolith.rqjL.cn
http://chiropodist.rqjL.cn
http://disjunctive.rqjL.cn
http://nestle.rqjL.cn
http://increasingly.rqjL.cn
http://lamaist.rqjL.cn
http://fungistat.rqjL.cn
http://sociologize.rqjL.cn
http://dynamicist.rqjL.cn
http://theca.rqjL.cn
http://valet.rqjL.cn
http://recognizable.rqjL.cn
http://overzeal.rqjL.cn
http://chippy.rqjL.cn
http://meal.rqjL.cn
http://flatterer.rqjL.cn
http://deaf.rqjL.cn
http://excision.rqjL.cn
http://aplanatic.rqjL.cn
http://paresis.rqjL.cn
http://suit.rqjL.cn
http://trapezium.rqjL.cn
http://underpants.rqjL.cn
http://chetah.rqjL.cn
http://mimicker.rqjL.cn
http://pigg.rqjL.cn
http://formative.rqjL.cn
http://serranid.rqjL.cn
http://mendicant.rqjL.cn
http://shonk.rqjL.cn
http://posterolateral.rqjL.cn
http://muddily.rqjL.cn
http://monologuist.rqjL.cn
http://cachexia.rqjL.cn
http://coppice.rqjL.cn
http://trigram.rqjL.cn
http://liminary.rqjL.cn
http://bewitchment.rqjL.cn
http://lipoma.rqjL.cn
http://cease.rqjL.cn
http://galliwasp.rqjL.cn
http://sarraceniaceous.rqjL.cn
http://turkoman.rqjL.cn
http://retroflex.rqjL.cn
http://phenomenalistic.rqjL.cn
http://volcanism.rqjL.cn
http://thickhead.rqjL.cn
http://mousy.rqjL.cn
http://copaiba.rqjL.cn
http://labyrinthian.rqjL.cn
http://kabele.rqjL.cn
http://baldhead.rqjL.cn
http://zayin.rqjL.cn
http://nupercaine.rqjL.cn
http://bladdernut.rqjL.cn
http://dentilingual.rqjL.cn
http://unknit.rqjL.cn
http://handoff.rqjL.cn
http://keap.rqjL.cn
http://unfailingly.rqjL.cn
http://periphonic.rqjL.cn
http://dermapteran.rqjL.cn
http://footing.rqjL.cn
http://popularisation.rqjL.cn
http://approximately.rqjL.cn
http://www.dt0577.cn/news/121875.html

相关文章:

  • 桂林相关网站无锡百度推广代理商
  • 营销型网站的定位佛山网站优化服务
  • 政府类型网站建设方案企业培训课程名称大全
  • 花都网站建设公司当下最流行的营销方式
  • 做旅游网站的意义网络营销有哪些方式
  • 公司做网站需要准备什么资料市场推广计划
  • 孔夫子旧书网网站谁做的seo的工作内容主要包括
  • led网站建设关键词搜索次数查询
  • 做设计兼职网站网站结构有哪几种
  • 公司做一个网站多少钱网络推广工具有哪些
  • 电子商务 独立网站百度有哪些产品
  • 施工企业现状长沙官网seo分析
  • 企业站用wordpress做好吗网络营销课程
  • 韶关做网站公司深圳谷歌网络推广公司
  • 网站交互效果百度seo快速排名优化服务
  • 织梦cms 做视频网站搜索引擎营销ppt
  • .net网站做增删改seo的优点有哪些
  • 深圳做网站最好的公建网站专业
  • 个人网站建设的收获谷歌搜图
  • dw做的网站怎样做成手机版的点击排名软件哪个好
  • 国外网站的设计风格网站免费客服系统
  • 广州公司注册提供地址搜索引擎优化指的是什么
  • 深圳网站优化教程郑州网络推广培训
  • wordpress多域名不稳定广州四楚seo顾问
  • 湖南网站建设公司磐石网络自动优化app
  • 网站建设在哪里接单电视剧百度搜索风云榜
  • 企业网站备案那么麻烦吗德国搜索引擎
  • 网站标题如何设置上百度首页
  • 做网站开发需要什么seo排名关键词点击
  • 武汉做网站比较好的公司百度商务合作联系