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

以网络营销为导向的网站建设应注意什么问题做网站顾客提现金额后台

以网络营销为导向的网站建设应注意什么问题,做网站顾客提现金额后台,门户网站建设 总结,中文域名网站标识目录 一、前言二、概念三、作用四实际用例4.1需求4.2流程4.3准备4.4创建基类4.5创建插件4.6注册插件4.7构建插件库4.8使插件可用于ROS工具链4.8.1配置xml4.8.2导出插件 4.9使用插件4.10执行 一、前言 pluginlib直译是插件库#xff0c;所谓插件字面意思就是可插拔的组件… 目录 一、前言二、概念三、作用四实际用例4.1需求4.2流程4.3准备4.4创建基类4.5创建插件4.6注册插件4.7构建插件库4.8使插件可用于ROS工具链4.8.1配置xml4.8.2导出插件 4.9使用插件4.10执行 一、前言 pluginlib直译是插件库所谓插件字面意思就是可插拔的组件比如:以计算机为例可以通过USB接口自由插拔的键盘、鼠标、U盘…都可以看作是插件实现其基本原理就是通过规范化的USB接口协议实现计算机与USB设备的自由组合。同理在软件编程中插件是一种遵循一定规范的应用程序接口编写出来的程序插件程序依赖于某个应用程序且应用程序可以与不同的插件程序自由组合。在ROS中也会经常使用到插件场景如下: 1.导航插件:在导航中涉及到路径规划模块路径规划算法有多种也可以自实现导航应用时可能需要测试不同算法的优劣以选择更合适的实现这种场景下ROS中就是通过插件的方式来实现不同算法的灵活切换的。 2.rviz插件:在rviz中已经提供了丰富的功能实现但是即便如此特定场景下开发者可能需要实现某些定制化功能并集成到rviz中这一集成过程也是基于插件的。 二、概念 pluginlib是一个c库 用来从一个ROS功能包中加载和卸载插件(plugin)。插件是指从运行时库中动态加载的类。通过使用Pluginlib不必将某个应用程序显式地链接到包含某个类的库Pluginlib可以随时打开包含类的库而不需要应用程序事先知道包含类定义的库或者头文件。 三、作用 结构清晰 低耦合易修改可维护性强 可移植性强更具复用性 结构容易调整插件可以自由增减 四实际用例 4.1需求 以插件的方式实现正多边形的相关计算。 4.2流程 1.准备 2.创建基类 3.创建插件类 4.注册插件; 5.构建插件库; 6.使插件可用于ROS工具链; 6.1配置xml 6.2导出插件 7.使用插件; 8.执行 4.3准备 创建功能包xxx导入依赖: roscpp pluginlib。 在 VSCode中需要配置 .vascode/c_cpp_properties.json文件中关于 includepath 选项的设置。 {configurations: [{browse: {databaseFilename: ,limitSymbolsToIncludedHeaders: true},includePath: [/opt/ros/noetic/include/**,/usr/include/**,/.../yyy工作空间/功能包/include/** //配置 head 文件的路径 ],name: ROS,intelliSenseMode: gcc-x64,compilerPath: /usr/bin/gcc,cStandard: c11,cppStandard: c17}],version: 4 } 4.4创建基类 在 xxx/include/xxx下新建C头文件: polygon_base.h所有的插件类都需要继承此基类内容如下: #ifndef XXX_POLYGON_BASE_H_ #define XXX_POLYGON_BASE_H_namespace polygon_base {class RegularPolygon{public:virtual void initialize(double side_length) 0;virtual double area() 0;virtual ~RegularPolygon(){}protected:RegularPolygon(){}}; }; #endif 注基类必须提供无参构造函数所以关于多边形的边长没有通过构造函数而是通过单独编写的initialize函数传参。 4.5创建插件 在 xxx/include/xxx下新建C头文件:polygon_plugins.h内容如下: #ifndef XXX_POLYGON_PLUGINS_H_ #define XXX_POLYGON_PLUGINS_H_ #include xxx/polygon_base.h #include cmathnamespace polygon_plugins {class Triangle : public polygon_base::RegularPolygon{public:Triangle(){}void initialize(double side_length){side_length_ side_length;}double area(){return 0.5 * side_length_ * getHeight();}double getHeight(){return sqrt((side_length_ * side_length_) - ((side_length_ / 2) * (side_length_ / 2)));}private:double side_length_;};class Square : public polygon_base::RegularPolygon{public:Square(){}void initialize(double side_length){side_length_ side_length;}double area(){return side_length_ * side_length_;}private:double side_length_;}; }; #endif 该文件中创建了正方形与三角形两个衍生类继承基类。 4.6注册插件 在 src 目录下新建 polygon_plugins.cpp 文件内容如下: //pluginlib 宏可以注册插件类 #include pluginlib/class_list_macros.h #include xxx/polygon_base.h #include xxx/polygon_plugins.h//参数1:衍生类 参数2:基类 PLUGINLIB_EXPORT_CLASS(polygon_plugins::Triangle, polygon_base::RegularPolygon) PLUGINLIB_EXPORT_CLASS(polygon_plugins::Square, polygon_base::RegularPolygon) 该文件会将两个衍生类注册为插件。 4.7构建插件库 在 CMakeLists.txt 文件中设置内容如下: include_directories(include) add_library(polygon_plugins src/polygon_plugins.cpp) 至此可以调用 catkin_make 编译编译完成后在工作空间/devel/lib目录下会生成相关的 .so 文件。 4.8使插件可用于ROS工具链 4.8.1配置xml 功能包下新建文件:polygon_plugins.xml,内容如下: !-- 插件库的相对路径 -- library pathlib/libpolygon_plugins!-- type插件类 base_class_type基类 --class typepolygon_plugins::Triangle base_class_typepolygon_base::RegularPolygon!-- 描述信息 --descriptionThis is a triangle plugin./description/classclass typepolygon_plugins::Square base_class_typepolygon_base::RegularPolygondescriptionThis is a square plugin./description/class /library 4.8.2导出插件 package.xml文件中设置内容如下: exportxxx plugin${prefix}/polygon_plugins.xml / /export 标签的名称应与基类所属的功能包名称一致plugin属性值为上一步中创建的xml文件。 编译后可以调用rospack plugins --attribplugin xxx命令查看配置是否正常如无异常会返回 .xml 文件的完整路径这意味着插件已经正确的集成到了ROS工具链。 4.9使用插件 src 下新建c文件:polygon_loader.cpp内容如下: //类加载器相关的头文件 #include pluginlib/class_loader.h #include xxx/polygon_base.hint main(int argc, char** argv) {//类加载器 -- 参数1:基类功能包名称 参数2:基类全限定名称pluginlib::ClassLoaderpolygon_base::RegularPolygon poly_loader(xxx, polygon_base::RegularPolygon);try{//创建插件类实例 -- 参数:插件类全限定名称boost::shared_ptrpolygon_base::RegularPolygon triangle poly_loader.createInstance(polygon_plugins::Triangle);triangle-initialize(10.0);boost::shared_ptrpolygon_base::RegularPolygon square poly_loader.createInstance(polygon_plugins::Square);square-initialize(10.0);ROS_INFO(Triangle area: %.2f, triangle-area());ROS_INFO(Square area: %.2f, square-area());}catch(pluginlib::PluginlibException ex){ROS_ERROR(The plugin failed to load for some reason. Error: %s, ex.what());}return 0; } 4.10执行 修改CMakeLists.txt文件内容如下: add_executable(polygon_loader src/polygon_loader.cpp) target_link_libraries(polygon_loader ${catkin_LIBRARIES}) 编译然后执行:polygon_loader结果如下: [ INFO] [WallTime: 1279658450.869089666]: Triangle area: 43.30 [ INFO] [WallTime: 1279658450.869138007]: Square area: 100.00 参考视屏赵虚左ros入门
http://www.yutouwan.com/news/179039/

相关文章:

  • 马鞍山市网站建设网站建设及seo
  • 英语做美食网站我学我做我知道网站
  • 宁夏建设厅网站领导wordpress 数据库结构
  • 北京市网站建设公司互动营销案例分析
  • 在凡科做网站编辑网站运营技术性高吗
  • vps绑定多个网站成都餐饮小程序开发
  • 做的最好的网站wordpress 微信登录key
  • 售后服务 网站建设网站开发快递
  • 网站开发的实施方案百度上做广告怎么收费
  • 产品展示网站模板下载江岸网站建设
  • 网站企业地图wordpress改登陆界面
  • 网站建设需要什么工具21年网站搭建公司排行榜
  • 备案网站能打开吗wordpress自动创建子站
  • 深圳计算机速成班培训百度惠生活怎么优化排名
  • 网页设计网站模板wordpress 做公司网站
  • 嘉兴做外贸网站的公司营销的三个基本概念是什么
  • 池州哪里做网站东莞优化公司收费
  • 深圳建站公司设计深业集团网页设计代码写入文字
  • 定制高端网站建设设计深圳知名网站设计公司
  • 公司网站建设选什么服务器wordpress设置自动保存
  • 网站建设的工作职责做电脑系统的网站好
  • 网页制作和网站建设网站小图标素材
  • 站优云seo优化互联网营销是做什么
  • 网站下雪特效在哪个网站做民营企业申报
  • 10个国内建筑网站北京工商局网站如何做股东变更
  • 淘宝客网站一定要备案吗用html
  • 低价网站建设怎么样建设手机银行注销网站
  • 网站开发主框架一般用什么布局长春网站建设团队
  • 电商设计网站有哪些功能模块做网站属于什么费用
  • 做网站那个搜索引擎好WordPress中文标题不显示