博客地址:http://www.cnblogs.com/zylyehuo/
基于[移动机器人运动规划及运动仿真],详见之前的博客
移动机器人运动规划及运动仿真 - zylyehuo - 博客园
参考链接
Autolabor-ROS机器人入门课程《ROS理论与实践》
ubuntu 18.04
<launch>
<!-- 仿真环境下,将该参数设置为true -->
<param name="use_sim_time" value="true"/>
<!-- gmapping -->
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<!-- 设置雷达话题 -->
<remap from="scan" to="scan"/>
<!-- 关键参数:坐标系 -->
<param name="base_frame" value="base_footprint"/><!--底盘坐标系-->
<param name="map_frame" value="map"/>
<param name="odom_frame" value="odom"/> <!--里程计坐标系-->
<param name="map_update_interval" value="5.0"/>
<param name="maxUrange" value="16.0"/>
<param name="sigma" value="0.05"/>
<param name="kernelSize" value="1"/>
<param name="lstep" value="0.05"/>
<param name="astep" value="0.05"/>
<param name="iterations" value="5"/>
<param name="lsigma" value="0.075"/>
<param name="ogain" value="3.0"/>
<param name="lskip" value="0"/>
<param name="srr" value="0.1"/>
<param name="srt" value="0.2"/>
<param name="str" value="0.1"/>
<param name="stt" value="0.2"/>
<param name="linearUpdate" value="1.0"/>
<param name="angularUpdate" value="0.5"/>
<param name="temporalUpdate" value="3.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="30"/>
<param name="xmin" value="-50.0"/>
<param name="ymin" value="-50.0"/>
<param name="xmax" value="50.0"/>
<param name="ymax" value="50.0"/>
<param name="delta" value="0.05"/>
<param name="llsamplerange" value="0.01"/>
<param name="llsamplestep" value="0.01"/>
<param name="lasamplerange" value="0.005"/>
<param name="lasamplestep" value="0.005"/>
</node>
<node pkg="joint_state_publisher" name="joint_state_publisher" type="joint_state_publisher" />
<node pkg="robot_state_publisher" name="robot_state_publisher" type="robot_state_publisher" />
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find nav_demo)/config/nav_test.rviz"/>
</launch>
<!-- 集成SLAM与导航,实现机器人自主移动的地图 -->
<launch>
<!-- 启动SLAM节点 -->
<include file="$(find nav_demo)/launch/nav01_slam_plus.launch" />
<!-- 运行move_base节点 -->
<include file="$(find nav_demo)/launch/nav05_path.launch" />
</launch>
source ./devel/setup.bash
roslaunch mycar environment.launch
source ./devel/setup.bash
roslaunch nav_demo nav06_test.launch
1、安装xinetdrpm–ivhxinetd-2.3.14-10.el5.i3862、查看是否安装了cvsrpm–qa|grepcvs3、卸载cvsrpm-ecvs-1.11.22-5.el54、解压cvstar-jxvfcvs-1.11.22.tar.bz25、进入cvs-1.11.22目录cdcvs-1.11.226、安装cvs./configuremakemakeinstall7、添加cvs组合cvsroot用户(密码为cvsroot)groupaddcvsuseradd-gcvs-d/home/cvsrootcvsrootpasswdcvsroot8、登陆cvsroot用户并创建仓库su-cvsrootmkdir/home/cvsroot/cvsreposcvs-d/home/cvsroot/cvsreposinit9、在cvsroot用户的.bash_profile文件中添加exportCVS_RSH=sshvi.bash_profilesource.bash_profile10、使用root用户在目录/etc/profile.d添加如下两个文件cvs.sh和cvs.csh
Ghost是一个免费的开源和轻量级平台,用于博客或在线出版物。它是在Nodejs中编写的,并附有各种各样的现代出版工具,用于轻松构建和运行在线出版物。它是功能丰富的,现在有一个桌面应用程序(在Linux,Windows和MacOS上运行),只需在您的计算机上提供Ghost的所有功能和功能。这意味着您可以随时随地在多个站点之间切换:使其绝对有效。鬼特点:快速,可扩展和高效。提供基于降价的编辑环境。配有桌面应用程序配有美丽的把手模板。支持简单的内容管理。支持作者,编辑和管理员的多重角色。允许提前安排内容。支持加速移动页面。完全支持搜索引擎优化。提供详细的结构数据。支持RSS,电子邮件和Slack订阅。启用简单的网站编辑等等。要求:Debian服务器最小安装1GB内存一个Ubuntu服务器最小安装与1GB内存Nodev6LTS-在Debian和Ubuntu中安装最新的Node.js和NPM安装了Nginx的Debian/Ubuntu服务器重要提示:在开始安装Ghost之前,您需要拥有一个很好的VPS主机,我们强烈推荐BlueHost。在本文中,我们将介绍如何在Debian和Ubuntu系统上
近日,有小伙伴私信我关于河流图(streamplot/streamgraph)的绘制方法,大家知道小编我可是非常宠粉的哦,这就安排!!(有的小伙伴可能会问了,为啥老是绘制静态(不可交互)的图表呢,这里小编统一回复一下哈:交互式图表我们后面会专门出系列推文(Python居多哈),目前我们还是为了进行打好基础哈),好了,我们直接开始哈,内容主要如下: 河流图简介R-ggstream包绘制河流图R-ggstream包实例演示河流图简介河流图(streamplot)是一种堆积面积图,主要用来表示事件或主题等在一段时间内的变化,通常以中心轴为中心显示区域,并且将边缘修圆以产生流畅的形状,也是使用较多的一种可视化图表,特别是在时间序列变化表示中。R-ggstream包绘制河流图在R绘图系统中,有很多包可以绘制该类图(streamgraph、ggstream),我们选择ggstream包进行绘制,原因在于其为ggplot2的拓展包,结合主题、颜色等包可实现高度的定制化操作。我们首先看一下这个包的情况:安装由于现阶段还没发布到CRAN上,我们可以通过如下代码进行安装:remotes::install_
SAPQM主检验特性主数据关键字段解释检验特征是QM模块中的一项重要主数据,可以说是QM检验业务的构成基础,它通过体现在Tasklist(检验任务清单)和/或materialspecification(物料规格)中而参与检验流程,并对检验结果起着控制作用。检验特征这一对象,当仅仅以主数据的形态出现时又被称为主检验特征(masterinspectioncharacteristics),而出现在检验任务清单或物料规格中时一般描述为“检验特征”(inspectioncharacteristics)。检验特性主界面如下:这个界面关键字段解释如下:1),'QuantitativeCharc'/'QualitativeCharc'(定量/定性标识):必须选择且只能选择其一,用来说明“本检验特征是定量检测还是定性检测”。2),'Status'(状态):只能选择Released,要不然创建检验特征的主数据就失去意义。只有released的主检验特性,才能在后续的检验业务中被使用到。3),CopyModel/ReferenceCharacter
背景在小程序开发中,经常有用到表单,我们往往需要在小程序端获取用户表单输入框中的值(通常用户输入的有:switch,input,checkbox,slider,radio,picker)等,通过触发事件,然后提交给后端处理那么在小程序当中有哪些方式可以获取到表单中的值呢,又怎么通过非表单提交的方式获取用户输入框中的值呢换言之,若提交按钮在form之外,又如何实现表单的提交呢在小程序中有两种方式可以获取表单的值form表单获取表单组件的值这是最普遍通用的一种方法,所有用户输入的组件放置在form内,当点击form表单中form-type为submit的button组件时它会将表单组件中的value值进行提交,但此时需要在表单组件中加上name来作为key如下UI所示:<viewclass="container"> <formbindsubmit="formSubmit"> <view> <viewclass="title">switch</view> <switc
前面几篇文章介绍了基本的排序算法,排序通常是查找的前奏操作。从本文开始介绍基本的查找算法。在介绍查找算法,首先需要了解符号表这一抽象数据结构,本文首先介绍了什么是符号表,以及这一抽象数据结构的的API,然后介绍了两种简单的符号表的实现方式。一符号表在开始介绍查找算法之前,我们需要定义一个名为符号表(SymbolTable)的抽象数据结构,该数据结构类似我们再C#中使用的Dictionary,他是对具有键值对元素的一种抽象,每一个元素都有一个key和value,我们可以往里面添加key,value键值对,也可以根据key来查找value。在现实的生活中,我们经常会遇到各种需要根据key来查找value的情况,比如DNS根据域名查找IP地址,图书馆根据索引号查找图书等等:为了实现这一功能,我们定义一个抽象数据结构,然后选用合适的数据结构来实现:publicclassST<Key,Value>ST()创建一个查找表对象voidPut(Keykey,Valueval)往集合中插入一条键值对记录,如果value为空,不添加ValueGet(Keykey)根据key查找value,如果
跨端开发一直都是火热的话题,作为前端开发者,了解一下终端的知识也是有好处的这篇先简单介绍一些安卓一些常用的基础知识和概念。一、环境配置安卓环境配置相对来说还比较简单,一般在官网下载AndroidStudio之后,创建个HelloWorld项目就是可以顺利编译的。这个过程中Java环境和一些安卓依赖的sdk环境,都是自动帮忙配置好。但是为了让我们能够在命令行里使用类似adbjava等命令。还需要配置一下环境变量:exportANDROID_HOME=~/Library/Android/sdk exportJAVA_HOME=/Applications/Android\Studio.app/Contents/jre/jdk/Contents/Home exportPATH=${PATH}:${ANDROID_HOME}/tools exportPATH=${PATH}:${ANDROID_HOME}/platform-tools exportPATH=${PATH}:${JAVA_HOME}/bin复制这里命令行最常用的就是adb命令。adb很强大,把安卓手机插到电脑上,可以用adb执行一
前言在当代社会,故宫已经成为一个具有多元意义的文化符号,在历史、艺术、文化等不同领域发挥着重要的作用,在国际上也成为能够代表中国文化甚至中国形象的国际符号。近几年故宫的观众接待量逐年递增,年接待量已突破千万,根据故宫的文物特点与开放模式,必须及时建立一套完整的集监控与防患应急于一体的现代化监控系统。故宫人流量动态监控系统采用Hightopo的HTforWeb产品来构造故宫3D动态可视化场景,通过将现场部署的传感器、监控设备等装置与智能联网设备集成到互联网上,对故宫当前的人流状态、人流拥挤度进行实时监测,并生成人流量热力图直观的展示现场人流数据,以预防拥挤、踩踏等意外事故的发生。预览地址:故宫人流量动态监控系统整体预览图:全景图预览:代码实现创建场景项目目录结构如下:index.js是src下的入口文件,创建了一个由main.js中导出的Main类,Main类中创建3D组件和2D组件,利用g2d.deserialize()方法将json矢量背景图反序列化显示在2D组件上并利用this.load()方法进行3D场景的加载工作,在Main类中使用了HT自带的事件派发器,this.event.
在CloudFoundry环境的ServiceMarket里找到MobileServices,启用之后,点击Support,进入mobileservices的控制台:我们要在Neo环境的WebIDE里控制CloudFoundry环境的mobile服务,因此需要创建Destination,指向CloudFoundrymobileservices的adminurl:Neo环境里创建一个Destination:将mobileservice控制台里的adminAPIurl拷贝下来,粘贴到NeoDestination的url字段里:确保CheckConnection连接成功。
双“11”最热门的话题是TB,最近正好和阿里的一个朋友聊淘宝的技术架构,发现很多有意思的地方,分享一下他们的解析资料: 淘宝海量数据产品技术架构 数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基础。图1淘宝海量数据产品技术架构 按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的浏览、搜索等行为日志等。这一系列的数据是数据产品最原始的生命力所在。 在数据源层实时产生的数据,通过淘宝自主研发的数据传输组件DataX、DbSync和Timetunnel准实时地传输到一个有1500个节点的Hadoop集群上,这个集群我们称之为“云梯”,是计算层的主要组成部分。在“云梯”上,我们每天有大约40000个作业对1.5PB的原始数据按照产品需求进行不同的MapReduce计算。这一计算过程通常都能在凌晨两点之前完成。相对于前端产品看到的数据
B.BeautifulPaintingstimelimitpertest 1secondmemorylimitpertest 256megabytesinput standardinputoutput standardoutputThereare n picturesdeliveredforthenewexhibition.The i-thpaintinghasbeauty ai.Weknowthatavisitorbecomeshappyeverytimehepassesfromapaintingtoamorebeautifulone.Weareallowedtoarrangedpicturesinanyorder.Whatisthemaximumpossiblenumberoftimesthevisitormaybecomehappywhilepassingallpicturesfromfirsttolast?Inotherwords,weareallowedtorearrangeelementsof a inanyorder.Whatisthemaximumpossiblenum
遍历算法主要用在在处理迷宫问题,图,最短路径,以及枚举所有可能等问题上。下面我们通过一个简单的例子,来入门深度优先和广度优先算法:1packagecom.rampage.algorithm.base; 2 3importjava.util.ArrayList; 4importjava.util.LinkedHashSet; 5importjava.util.List; 6importjava.util.Set; 7 8/** 9*相关的搜索算法实例假设有1-9,9个数字,现在任意取三个,要求得到一共能得到多少个不同值的数字。如果可能的化输出所有可能的值。 10* 11*@authorzyq 12* 13*/ 14publicclassSearchAlgorithm{ 15privatestaticinttotalCount=0;//存储总计数 16privatestaticSet<String>results=newLinkedHashSet<String>();//存储所有的结果 17 18publicstaticvoidmain(String[]args){
/** *Createdbychaozhouon2016/5/30. */ /** *扩展的基本校验规则, */ $.extend($.fn.validatebox.defaults.rules,{ minLength:{//判断最小长度 validator:function(value,param){ value=$.trim(value);//去空格 returnvalue.length>=param[0]; }, message:'最少输入{0}个字符。' }, length:{validator:function(value,param){ varlen=$.trim(value).length; returnlen>=param[0]&&len<=param[1]; }, message:"输入大小不正确" }, phone:{//验证电话号码 validator:function(value){ return/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2
在平时开发过程中写sql时,我们通常都不太关心sql的性能,只有能给查出来数据,sql的执行速度不是太慢就不会去管它了。但是开发时期的数据量往往都不是太大,很多性能问题只有在生产环境中才会发现,如:数据过多、sql关联了太多的表,使用了太多的join、或者建立了索引,但是索引失效的问题。所以要解决这些性能上的难题,就要去研究mysql最为重要的特性--索引。 一、索引的简介 1.索引的定义 首先我们来看看官网上,对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。这种数据结构是BTree或B+Tree(我们这里不会去介绍这两种树)。 详细的来讲,数据库维护着两种东西,一个是用户本身存储的数据,另一个则是满足特定查找算法的数据结构,数据结构可以通过一些特定的方式来指向我们使用的数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。 2.索引的特点 索引的优点: 第一点:能够提高数据库检索数据的效率,降低数据库对磁盘的IO读取次数。 第二点:排序过程中是需要消耗CPU资源的,如果加上了索引,
一、对回溯法的理解 回溯法和暴力法其实是同理的,向着其中一条路无限走下去,直到尽头,再回头。把所有的路走完为止,然后找到解。在这个过程中,可以增加限制条件来减少路的数目,达到优化的效果。 二、子集和问题 voiddfs(intnum){ if(flag1){ return; } if(sum==c){ for(inti=1;i<num;i++){ if(flag[i]){ cout<<a[i]<<""; } } flag1=1; return; }elseif(sum>c){ return; }else{ if(num<=n){ sum+=a[num]; flag[num]=1; dfs(num+1); sum-=a[num]; flag[num]=0; dfs(num+1); } } return; } 第一题代码复制 ViewCode 三、结对编程情况 好,很好,非常好!
【题外话】 最近在做C3D文件的解析,好奇怪的是文件中竟然存储了CPU的类型,原本不以为然,结果后来读取一个文件发现浮点数全部读取错误。查了下发现虽然在上世纪80年代就提出了IEEE754要统一浮点数标准,但是到现在仍然有计算机采用不同方式存储浮点数。在某些非IEEE754标准的计算机产生的二进制文件中,如果拿到其他计算机中读取,如果不进行专门的转换,可能导致数据错误等问题。 【文章索引】 IEEE754标准浮点数字的存储详解 VAX及IBM浮点数字的存储和转换 双精度浮点数的处理 【一、IEEE754标准浮点数字的存储详解】 对于x86等常见的CPU,都是采用IEEE754存储和计算浮点型的,当然在.NET平台中浮点型也是IEEE754标准的。首先回顾下本科时学过的计算机组成原理,查了下课本发现是如下介绍IEEE754浮点数的存储的(唐朔飞版课本233页): 其中,S为数符,它表示浮点数的正负,但与其有效位(尾数)是分开的。阶码用移码表示,阶码的真值都被加上一个常数(偏移量),如短实数、长实数和临时实数的偏移量用十六进制
注:下面涉及的代码文件可查看我的LessSharp框架Github 按Asp.netcore默认的接口写法,每个接口控制器都得继承自ControllerBase类,还需具有ApiController特性及Route特性,Route特性上还得手动写上路由规则。如下图所示 我觉得挺麻烦的,可能我比较懒,其实我的写的大多数的接口路径都是按一定规则的,一般是以命名空间Controllers.后面的命名空间做为路径前缀,然后以[controller]/[action]路由规则进行匹配。 例如命名空间LessSharp.WebApi.Controllers.Sys下面的UserController控制器下面的Save接口,那么根据命名空间的后面Sys,对应的接口路径值就为/Sys/User/Save 那么我希望默认情况下,可以以我上面的规则自动生成路径,如果有特殊情况的话,那我加个Route特性,手动写上我的路由规则,框架就优先按我Route特性定义的路由路径值。 我实现的方法主要使用了Asp.netCore提供的控制器模型约定ControllerM
有这样一串字符串:Strings="共100页,1234..."; 假如我想把"100"给取出来,该如何做? 方法一:采用split的方式 System.out.println(s.split("")[1]);或者System.out.println(s.split("\\s")[1]); 假如空""有多个时,可以这样:System.out.println(s.split("\\s+")[1]); 注:split是支持正则的,\s在正则中表示空格,+在正则中表示至少1个,即1个或多个,所以\s+表示至少有一个空格 方法二:采用indexOf的方式 intbegin=s.indexOf("");intend=s.indexOf("",begin+1);System.out.println(s.substring(begin+1,end)); 方法三:正则 封装好的一个正则类: publicclassRegExp{ publicbooleanmatch(Stringreg,Stringstr){ returnPattern.matches(reg,str); } publi
首先声明因为公司需要用到react.js自己就学习了下,最基础得教程可以直接百度快速链接地址(https://www.runoob.com/react/react-install.html),以下是react各个组件得生命周期 一、概述 React可以将组件定义为类或函数。定义为类的组件当前提供了更多的功能。要定义React组件类,您需要扩展React.Component: classWelcomeextendsReact.Component{ render(){ return<h1>Hello,{this.props.name}</h1>; } }复制 必须在React.Component子类中定义的唯一方法称为render()。描述的所有其他方法都是可选的。 强烈建议不要创建您自己的基础组件类。在React组件中,代码重用主要是通过组合而不是继承来实现的。 二、组件的生命周期 每个组件都有几个“生命周期方法”,您可以重写以在该进程中的特定时间运行代码。您可以使用此生命周期图作为备忘单。在下面的列表中,常用的生命周期方法标记为粗体。其余的存在于
【题目】http://acm.hdu.edu.cn/showproblem.php?pid=1032 【报告】 直接暴力题。不过最后还是用了记忆化搜索。总感觉直接暴力会TLE。网上有大神用线段树做的,ORZ... 【程序】 //Task:1032The3n+1problem //Designer:Rsky2013/09/01 #include #include #include #include #include usingnamespacestd; maphash; inlineintcalc(intx) { if (hash.find(x)!=hash.end())returnhash[x]; elseif (x%2==0)returnhash[x]=calc(x/2)+1; elsereturn hash[x]=calc(3*x+1)+1; } intmain() { int x,y; &
12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 摘要 1.引言 2.相关工作 2.1知识图补全(KGC) 2.2预训练语言模型(PLM) 2.3对比学习 3.模型方法 3.1符号 3.2模型结构 3.3负采样 3.3.1批内负采样(IB) 3.3.2批前负采样(PB) 3.3.3自我负采样(SN) 3.3.4负采样处理 3.4基于图的重排序 3.5训练和推断 摘要 知识图谱补全(KGC)的目的是对已知事实进行推理,并推断出缺失的环节。基于文本的方法,如KG-BERT从自然语言描述中学习实体表示,并具有归纳KGC的潜力。然而,基于文本的方法的性能仍然大大落后于基于图嵌入的方法(KGE),如TransE和RotatE。 在本研究中,我们认为关键问题在于有效的对比学习。为了提高学习效率,我们引入了三种类型的负采样:批内负采样、批前负采样和作为困难负样本的简单形式的自我负采样。结合InfoNCE损失,我们提出的模型SimKGC在多个基准数据集上的性能大大优于基于嵌