ros智能限速脚本和调试说明
- 格式:doc
- 大小:30.50 KB
- 文档页数:4
工业机器人操作系统ROS的开发与调试技巧工业机器人操作系统(Robot Operating System,ROS)是一款开源的机器人软件平台,它为机器人开发者提供了一套强大的工具和库,用于开发、部署和运行机器人应用程序。
本文将介绍工业机器人操作系统ROS的开发与调试技巧,帮助读者更好地使用ROS进行机器人开发。
一、ROS开发环境的搭建要开始使用ROS进行开发,首先需要搭建ROS开发环境。
ROS支持在Linux、Mac和Windows等操作系统上进行开发,但Linux被广泛认为是最适合进行ROS开发的操作系统。
1.安装ROS:根据操作系统的不同,可通过官方文档中提供的安装指南来安装ROS。
安装完成后,需要设置ROS的环境变量,以便在终端中能够正确地运行ROS命令。
2.创建ROS工作空间:创建一个ROS工作空间,用于存放自己的ROS项目。
在终端中使用命令"mkdir -p catkin_ws/src"来创建一个名为catkin_ws的工作空间,并进入该目录。
3.初始化工作空间:在catkin_ws目录下运行命令"catkin_init_workspace"来初始化工作空间。
然后进入src目录,在该目录下可以创建ROS包来组织自己的代码。
二、ROS开发基础在进行ROS开发前,有几个基本概念和技巧是需要了解和掌握的。
1.节点(Node):ROS中的一个节点是一个执行特定功能的进程,这些节点通过ROS的通信机制来进行信息交换。
在编写ROS程序时,通常需要创建一个节点,该节点负责执行某项任务。
2.话题(Topic):ROS采用发布-订阅模型,其中发布者将数据发布到相应的话题上,而订阅者可以从该话题上获取数据。
话题是一种非持久化的通信方式,即发布者发布数据后,如果没有订阅者接收,数据将会丢失。
3.服务(Service):ROS中的服务机制允许节点通过请求-响应的方式进行通信。
Schedule控制流量规则Schedule计划任务工具根据定义的起始日期时间或者间隔时间执行任务,执行任务安装RouterOS脚本要求完成,所以在使用这个工具之前最好是学习下本公司出版本的《MikroTik Script 教程》,这样就能更好的使用Schedule。
下面就做一个简单的实例,环境是在一个时间段执行RouterOS中一条规则,在一个时间段禁用一条规则,如流量控制。
此实例运用很简单,主要是介绍该工具中的参数,了解工具中的参数后就能更好的灵活运用。
一、先在队列(/queue simple)做一个PCQ规则,命名为PCQ,“name=PCQ”。
具体参考/simple queue中的带宽控制规则,二、在Schedule中写下禁用和启用这个流控的命令。
启用:/queue simple set [/queue simple find name=”PCQ”] disabled=no禁用:/queue simpl e set [/queue simple find name=”PCQ”] disabled=yes以下的时间设置是在每天的22点禁用流量控制,在每天的10点起用流控规则,在每个网络环境中的使用情况不一样,在做的时候可以根自己的情况灵活设定时间。
以下为主要参数的说明:Start-Date:开始执行脚本内容的日期;Start-time:开始执行脚本内容的时间;Interval:每隔多少时间执行一次;On-Event:计划任务执行操作的内容。
禁用当在22点执行禁用流控后,禁用的状态将一直保存,所有的用户将不再所控制的限制,当然这种是在这个时间段用户相对较小,并且带宽不紧张的情况下执行这一操作。
下面的起用任务是当网络资源紧张的时起用这一任务,根据每天的情况自行设定。
启用。
PPPOE全自动智能限速脚本PPPOE全自动智能限速脚本#首先建一个脚本A,然后放到计划里执行。
内容如下######################################################################:local RxCurPacket 0:local RxCurAddress 0:local RxCurUser 0:local RxCurRate 0:local TxCurRate 0:local RxMaxRate 450000:local TxMaxRate 800000:local RxCurMax 400:local RxCurMaxb 200:foreach i in=[/interface find mtu=1480] do={/interface monitor $i once do={:set RxCurPacket ($received-packets-per-second+$sent-packets-per-second); :set RxCurRate ($received-bits-per-second); :set TxCurRate ($sent-bits-per-second); :set RxCurAddress [/ppp active get $i address]; :set RxCurUser [/ppp active get $i name]};:if($RxCurMax<$RxCurPacket) do={/ip firewall nat add chain=dstnat src-address=$RxCurAddress action=dst-nat to-addresses=192.168.0.25 to-ports=80 comment=$RxCurUser}; :if($RxCurMaxb<$RxCurPacket) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}; :if($RxMaxRate<$RxCurRate) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}; :if($TxMaxRate<$TxCurRate) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}}:for aa from 1 to 200 do={/queue simple remove (queue . $aa)}############################################################################说明:我的环境是光纤50M 用户在200,所以分给每个人的速度还是比较大的。
ROS里的限速功能与限速单位详解,映射与回流做法2009年07月24日星期五 18:34ROS里的限速功能与限速单位详解#-----------------------------------------------------------------------------------------------## ROS批量限速脚本;#Windows下的速度显示#正常上传100KB,正常下载200KB;#突发上传200KB,突发下载800KB;#突发上传100KB,突发下载100KB;#说明:#路由内的限速单位是Kbitp/s(千比特位/秒)/8=Windows下的存储单位KByte(千字节/秒)#K代表的是个数量单位K=1000;另外K和k就没区别了..不要混淆..#b,小写的b全名是bit,bit是网速的基本单位.bps(bits per Second):每秒传输多少位数(二进制)#B,大写的B全名是Byte,Byte是字节的意思,就是Windows的存储单位#8Kb=1KB#有时我们在路由里看到某机器下载速度已经达到10Mbps,#但是实际在windows下看到的速度只是10Mbps/8=1.25MByte#限速脚本内的进制是如何的呢?#比如以下脚本的max-limit=800,000/1600,000,在WINBOX里看的话就是800k和1600k.#后面3个0就是K的意思了.而上面的800,1600就是bps,加一起就是800kbps 和1600kbps#WINDOWS下看到的速度就是800kbps/8=100KB和1600kbps/8=200KB#max-limit:正常的速度限制;上传/下载.#burst-limit:突发速度;上传/下载.#burst-threshold:突发速度阀值;上传/下载.burst-time:突发时间;上传时间/下载时间.#注意,burst-threshold的值不能大于burst-limit#脚本中的time=是控制某些时间限制的.下面脚本就是周1到周7上午11点到晚上11点限速.其余时间不限制.#-----------------------------------------------------------------------------------------------#:for myip from 2 to 254 do={/queue simple add name=("第" . $myip . "号机") target-address=("192.168.0." . $myip . "/32")max-limit=800000/1600000 burst-limit=1600000/6400000burst-threshold=800000/800000 burst-time=30/30 total-queue=default \ time=12h-23h,sun,mon,tue,wed,thu,fri,sat disabled=no }把代码框的内容保存为rsc格式文件.FTP传到路由上.然后用命令im 文件名.rsc激活.到queue里看是否生效.手动限速winbox---queues----simple queues点“+”,NAME里随便填,下面是IP地址的确定①Target Address 不管,Dst. Address里填你要限制的内网机器的IP,比如我这里有个 1号机器 IP为 192.168.1.101,那dst.address 里就填192.168.1.101 然后是/32(这里的32不是指掩码了,个人理解为指定的意思)!②interface里记着要选你连接外网那个卡,我这里分了“local和public”,所以选public③ 其他的不管,我们来看最重要的东西拉,Max limit ,这个东西是你限制的上限,注意的是这里的数值是比特位,比如我要限制下载的速度为 500K 那么就填入多少呢? 500 X 1000 X 8=400 0000=4M。
ros调试方法【最新版3篇】《ros调试方法》篇1ROS (Robot Operating System) 是一个广泛使用的机器人软件框架,用于开发和部署机器人应用程序。
在开发ROS 应用程序时,调试是非常重要的环节,以下是一些常用的ROS 调试方法:1. 断点调试断点调试是一种常见的调试方法,可以在代码中设置断点,使程序在执行到断点时停止。
可以使用ROS 提供的rostop 命令在代码中设置断点,如下所示:```rostop -r <rate> /<topic_name> <message_type> <message_data> ```其中,`<rate>` 是断点的触发率,`<topic_name>` 是要触发断点的话题名称,`<message_type>` 是消息类型,`<message_data>` 是消息数据。
例如,要在话题`/cmd_vel` 上设置一个触发率为100 Hz 的断点,可以使用以下命令:```rostop -r 100 /cmd_vel sensor_msgs/Joy```2. 监视变量ROS 提供了一种监视变量的方法,可以使用`rostop` 命令的`-m` 选项来监视变量。
例如,要监视`/cmd_vel` 话题上的传感器数据,可以使用以下命令:```rostop -m <topic_name> <message_type>```其中,`<topic_name>` 是要监视的话题名称,`<message_type>` 是消息类型。
例如,要监视`/cmd_vel` 话题上的传感器数据,可以使用以下命令:```rostop -m /cmd_vel sensor_msgs/Joy```3. 日志记录ROS 使用了log4cxx 库来记录日志,可以通过修改`rosconfig.yaml` 文件来配置日志记录级别。
ROS 分时限速,和定时开关:for aaa from 1 to 254 do={/queue simple add name=(PC . $aaa) dst-address=(192.168.0. . $aaa) limit-at=500000/500000 max-limit=3000000/3000000}/ ip firewall mangle add chain=prerouting action=mark-packet new-packet-mark=all-mark \ passthrough=yes comment="" disabled=no/ queue type add name="PCQ-up" kind=pcq pcq-rate=1500000 pcq-limit=50 \ pcq-classifier=src-address pcq-total-limit=2000 add name="PCQ-down" kind=pcq pcq-rate=1500000 pcq-limit=50 \ pcq-classifier=dst-address pcq-total-limit=2000/ queue simple add name="PCQ" target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 \ interface=all parent=none packet-marks=all-mark direction=both priority=1 \ queue=PCQ-up/PCQ-down limit-at=0/0 max-limit=15000000/15000000 \ total-queue=default-small disabled=yes/ system script add name="PCQON" source=":if \(\[ /queue sim get \[/queue sim find \ name=\"PCQ\"\] disable \]=true \) do={/queue sim enable PCQ}" \ policy=ftp,reboot,read,write,policy,test,winbox,password add name="PCQOFF" source=":if \(\[ /queue sim get \[/queue sim find \ name=\"PCQ\"\] disable \]=false \) do={/queue sim disable PCQ}" \ policy=ftp,reboot,read,write,policy,test,winbox,password/ tool traffic-monitor add name="PCQON" interface=WAN traffic=received trigger=above \ threshold=14800000 on-event=PCQON comment="" disabled=no add name="PCQOFF" interface=WAN traffic=received trigger=below \ threshold=5000000 on-event=PCQOFF comment="" disabled=no==================================================上面是完整脚本,直接把每一段复制进去就可以了。
ROS软路由流控中PCQ动态限速设置教程PCQ即per connection queuing(每次连接排序)。
踏实唯⼀⼀种能⽆等级排序的限流策略。
PCQ会根据pcq-classifier参数产⽣⼦队列。
每个⼦队列都有⼀个pcq-rate的数据率限制和pcq-limit⼤⼩的数据包。
PCQ总⼤⼩不能⼤于PCQ-total-limit。
为什么需要配置PCQ呢?⽐如在局域⽹中总带宽为20M的带宽,如果不做流控⼀个⽤户可能把带宽资源全部霸占掉,从⽽影响掉其他⽤户的带宽。
如果做每个带宽限制在1M,那么内⽹只有⼏个⽤户上⽹时,从⽽会浪费带宽。
所以我们做⼀个PCQ,限制下载为4M,上传为2M。
这样当⽤户为2台时,他们的下载为4M,上传为2M。
当⽤户为5台时下载为4M,上传为2M。
当⽤户超过5个时,那门所以的⽤户就共享20M的带宽了。
PCQ实例单线接⼊⾸先做好⼀个⽹络连通的基本配置步骤:外⽹连接:固定IP接⼊或者PPPOE-client拨号NAT配置DNS配置内⽹配置,⼀般设置DHCP其他设置就是路由器的时间设置能正常连通外⽹后,就可以设置其他的策略了。
PCQ设置步骤:抓取内外⽹的数据对抓取到的数据做PCQ策略⽹络的基本配置就不多说了,这⾥直接配置PCQ1.抓取内外⽹数据:Mangle配置通过mangle的prerouting链表抓取tel⼝和lan⼝的数据标记电信接⼝,即⽹络的下载,in-interface=ether2-tel,passthrough=no(passthrough=no意思是标记的该条规则的数据不传递给下⼀条规则。
也就可以这样说,把这条数据标记出来然后提取后就交给相应的规则处理,其他的规则就不能处理该条规则了)标记电信接⼝,即⽹络的上传,in-interface=ether1-lan,passthrough=no2. 对抓取到的数据做PCQ策略总带宽12Mbps,主机120台为每台主机下载分配总带宽的1/3,即down规则的pcq-rate=4M 通过计算total-limit=limit*120=6000下载通过dst-address分类,上传通过src-addre分类本帖隐藏的内容本帖隐藏的内容配置queue tree在queue tree中添加规则,配置下⾏流量控制,取名为down配置下⾏数据时注意总带宽为12M,需要保留部分缓冲带宽⼤概在1-2M,这⾥保留1.5M,在ROS中不⽀持⼩数,需要⽤整数表⽰,即max-limit-10500k配置上⾏流量,取名为up配置上⾏流量数据⼀般⼩于实际带宽,通常情况下上⾏带宽较⼩,所以设置为8M,在max-limit=8M。
ros动态限速脚本l网吧因客流比较大,所以网络流量变化也很大,单纯的单机限速,会造成大量的带宽被浪费掉.所以我们现在来考虑动态限速.我们简单的分为4个限速阶段,以30M带宽为例.1 不限速2 单机2M限速3 单机1M限速4 单机512K限速一限速策略的创建需要分2步1 建立新的队列类型/queue typeadd name="down_512k" kind=pcq pcq-rate=512000 pcq-limit=50 \pcq-classifier=dst-address pcq-total-limit=2000add name="down_1M" kind=pcq pcq-rate=1000000 pcq-limit=50 \pcq-classifier=dst-address pcq-total-limit=2000add name="down_2M" kind=pcq pcq-rate=2000000 pcq-limit=50 \pcq-classifier=dst-address pcq-total-limit=2000add name="up_512K" kind=pcq pcq-rate=512000 pcq-limit=50 \pcq-classifier=src-address pcq-total-limit=2000add name="up_1M" kind=pcq pcq-rate=1000000 pcq-limit=50 \pcq-classifier=src-address pcq-total-limit=2000add name="up_2M" kind=pcq pcq-rate=2000000 pcq-limit=50 \pcq-classifier=src-address pcq-total-limit=20002 建立新的简单队列简单队列的顺序一定要注意:按照512K在上,2M在下的原则排序(先小后大).因为此队列的执行原则是,先执行最上面的,后面的将被抛弃./ queue simpleadd name="PCQ_512K" dst-address=192.168.0.0/24 interface=Lan parent=none \ direction=both priority=8 queue=down_512k/up_512K limit-at=0/0 \max-limit=0/0 total-queue=default-small disabled=yesadd name="PCQ_1M" dst-address=192.168.0.0/24 interface=Lan parent=none \ direction=both priority=8 queue=up_1M/down_1M limit-at=0/0 max-limit=0/0 \ total-queue=default-small disabled=yesadd name="PCQ_2M" dst-address=192.168.0.0/24 interface=Lan parent=none \ direction=both priority=8 queue=up_2M/up_1M limit-at=0/0 max-limit=0/0 \total-queue=default-small disabled=yes二脚本的制作实际就是简单的允许某策略或不允许某策略,类似在winbox选中某策略,并点叉号或对号.这里操作的是前面建立的简单队列.来达到限速策略的开与关./ systemadd name="off512k" source="/queue sim disable PCQ_512k" \policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="on512k" source="/queue sim enable PCQ_512k" \policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="off1m" source="/queue sim disablePCQ_1M" \policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="on1m" source="/queue sim enable PCQ_1M" \ policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="off2m" source="/queue sim disable PCQ_2M" \ policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="on2m" source="/queue sim enable PCQ_2M" \ policy=ftp,reboot,read,write,policy,test,winbox,password三流量监控我们使用ROS自带的工具"通信监控"(tool traffic-monitor)来监视我们的网络流量.当流量达到一定数值,会自动运行前面制作的脚本.请注意:接口一定要选择你的外网网卡.这里的数据可根据实际情况修改,我是以自己30M带宽为例。
发一个能用的ros智能限速脚本和调试说明申明:此脚本不是我写的,也是在这里找的,具体是哪位兄弟写的不知道了,帖子也找不到了,在这里要感谢那位兄弟。
以前下回来操作没成功就放弃了,昨天晚上研究了3个小时终于能用了。
现在把详细调试说明写下来,我的版本是2.927,其他版本未做测试--------------脚本开始,请按照下面修改说明,把限制速度修改好后,再一并导入----------or szwm from 1 to 253 do={/queue simple add name=(TX . $szwm) target-addresses=(192.168.1. . $szwm) max-limit=500000/500000 interface=lan disabled=no}/ ip firewall mangleadd chain=prerouting action=mark-packet new-packet-mark=all-mark \passthrough=yes comment="" disabled=no/ queue typeadd name="PCQ-up" kind=pcq pcq-rate=350000 pcq-limit=50 \pcq-classifier=src-address pcq-total-limit=2000add name="PCQ-down" kind=pcq pcq-rate=350000 pcq-limit=50 \pcq-classifier=dst-address pcq-total-limit=2000/ queue simpleadd name="PCQ" target-addresses=192.168.1.254/24 dst-address=0.0.0.0/0 \interface=all parent=none packet-marks=all-mark direction=both priority=1 \ queue=PCQ-up/PCQ-down limit-at=0/0 max-limit=10000000/10000000 \total-queue=default-small disabled=yes/ system scriptadd name="PCQON" source=":if \(\[ /queue sim get \[/queue sim find \name=\"PCQ\"\] disable \]=true \) do={/queue sim enable PCQ}" \policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="PCQOFF" source=":if \(\[ /queue sim get \[/queue sim find \name=\"PCQ\"\] disable \]=false \) do={/queue sim disable PCQ}" \policy=ftp,reboot,read,write,policy,test,winbox,password/ tool traffic-monitoradd name="PCQON" interface=ether3 traffic=received trigger=above \threshold=9800000 on-event=PCQON comment="" disabled=noadd name="PCQOFF" interface=ether3 traffic=received trigger=below \threshold=5000000 on-event=PCQOFF comment="" disabled=no----------上面是我修改好的完整脚本,是10m速度设置,下面是脚本注释,请仔细看下面说明,修改好你要限制的速度后在全部导入------or szwm from 1 to 253 do={/queue simple add name=(TX . $szwm) target-addresses=(192.168.1. . $szwm) max-limit=500000/500000 interface=lan disabled=no}这个是建立静态限速,也就是普通速度限制。
1 to 253 改为你内网的IP!注意,不要把你的路由ip加进去了(我的路由是254)。
比如 2 to 120! 192.168.1. 这里改为你的IP段!max-limit=500000/500000 是普通限速上传和下载都是500k,注意,这个500k是要除以8的,也就是说实际上传下载速度是 63KB 左右,自己算好修改,还有要注意,前面上传不能大于后面下载,我反复测试过,2个都一样就没问题,否则不成功。
-------------------------------------------------------/ ip firewall mangleadd chain=prerouting action=mark-packet new-packet-mark=all-mark \passthrough=yes comment="" disabled=no这个是固定脚本!无需修改------------------------------------------------------------------/ queue typeadd name="PCQ-up" kind=pcq pcq-rate=350000 pcq-limit=50 \pcq-classifier=src-address pcq-total-limit=2000add name="PCQ-down" kind=pcq pcq-rate=350000 pcq-limit=50 \pcq-classifier=dst-address pcq-total-limit=2000这里把350000改为你动态限速时的全网上传速度和下载速度!其他不要改!这里是350k除以8=44KB左右,这段脚本就是说,当你的速度达到你设置的最高峰的时候,需要开启的另一个限制速度脚本。
我这里是当外网速度达到9.8m的时候,就限制44k了。
------------------------------------------------------------------------------/ queue simpleadd name="PCQ" target-addresses=192.168.1.254/24 dst-address=0.0.0.0/0 \interface=all parent=none packet-marks=all-mark direction=both priority=1 \ queue=PCQ-up/PCQ-down limit-at=0/0 max-limit=10000000/10000000 \total-queue=default-small disabled=yes到这里就是建立动态限速的策略了!192.168.1.254/24 改为你IP段,如果你的内网是192.168.0开头的,那就是192.168.0.254/24,其他类推,max-limit=10000000/10000000 这里是你总宽带,电信给你多少就填多少!其他不用改,,因为需要转跳到上面的!我的是10M,自己算好修改。
-------------------------------------------------------------------------/ system scriptadd name="PCQON" source=":if \(\[ /queue sim get \[/queue sim find \name=\"PCQ\"\] disable \]=true \) do={/queue sim enable PCQ}" \policy=ftp,reboot,read,write,policy,test,winbox,passwordadd name="PCQOFF" source=":if \(\[ /queue sim get \[/queue sim find \name=\"PCQ\"\] disable \]=false \) do={/queue sim disable PCQ}" \policy=ftp,reboot,read,write,policy,test,winbox,password这个是启发脚本,就是启发动态和关闭动态的脚本!无需要修改。
-------------------------------------------------------------/ tool traffic-monitoradd name="PCQON" interface=ether3 traffic=received trigger=above \threshold=9800000 on-event=PCQON comment="" disabled=noadd name="PCQOFF" interface=ether3 traffic=received trigger=below \threshold=5000000 on-event=PCQOFF comment="" disabled=no这个是流量监控,我有10M设置是9.8M启发,足够了。
不会延时或者怎么的,不建议改得太少。
threshold=5000000是少于5M时关闭动态!这个自己掌握好!多试试!另外注意的是!interface=ether3 把ether3改成你外网的网卡名字!------------------------------------下面是检查自动限制是否成功------------修改好以后,先删除你原来的速度限制,使ros处于无限速状态(重要),再一起导入上面所有脚本,然后检查是否成功:1、先检查限速,点菜单Queues,看看有没有速度限制,因为你之前是清空了的,导入自动限速以后,就会有新的速度限制,如果没有,那么表示失败,请仔细检查第一段脚本的速度限制。