- 博客(54)
- 收藏
- 关注
转载 Android布局优化--include, merge, viewStub
摘要:在布局优化中,Androi的官方提到了这三种布局、、,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。在布局优化中,Androi的官方提到了这三种布局、、,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。1、布局重用标签能够重用布局文件,简单的使用如下:
2015-11-30 10:31:27
274
原创 movebase导航和地图数据的使用 - 12 为传感器增加一个layer
1.需要修改./src/navigation-full/turtlebot_apps/turtlebot_navigation/param/costmap_common_params.yaml文件。模仿obstaclelayer,增加一个ultrasoniclayer,定义如下.ultrasonic_layer:enabled: truemax_obstacle_heigh
2015-11-10 17:52:59
1011
原创 movebase导航和地图数据的使用 - 11 voxel layer数据的生成和使用
Voxel layer包含在localcostmap和globalcost map里面。是obstaclelayer的一个子类。目前voxellayer数据来源于雷达扫描。我们增加的超声波数据也成为一种voxellayer.我们看看costmap_common_params.yaml的内容:obstacle_layer: enabled: true max_obstacle
2015-11-10 17:52:02
1946
原创 movebase导航和地图数据的使用 - 10 static layer数据的生成和使用
Static layer的数据来源方式两种:1. staticLayer可以从mapserver的maptopic直接接受数据。StaticLayer::incomingMap是callback.这种情况是直接使用已有的map数据。2. 还有一种得到map数据的方法是从gmapping拿到实时发现的地图数据:navigation/map_server/src/main.cpp:174:
2015-11-10 17:50:35
912
原创 movebase导航和地图数据的使用 - 9 地图数据的构成
rviz中能看到map,global map, local map.三种地图,其实map就是fastslam建立的地图,数据来自雷达。globalmap和localmap都是costmap,他们都由各自的layers合并而成。1. rviz中的map来自gamapping发送的/maptopic数据,或者也可以是来自mapserver发送的/maptopic数据,具体看是在建图还是在导
2015-11-10 17:49:39
1118
原创 movebase导航和地图数据的使用 - 8 导航中recovery的逻辑
什么时候会触发recovery?enum RecoveryTrigger{PLANNING_R, //无法算出planCONTROLLING_R, //local planner无法利用localcostmap算出一个localplan,从而无法得到速度命令OSCILLATION_R,//机器人在不断抖动};1. planthread里,如果发现无法算出最新
2015-11-10 17:48:34
865
原创 movebase导航和地图数据的使用 - 7 global costmap和local costmap的区别和用途
两份costmap如下:planner_costmap_ros_ = newcostmap_2d::Costmap2DROS("global_costmap", tf_);controller_costmap_ros_ = newcostmap_2d::Costmap2DROS("local_costmap", tf_);看看区别:他们的参数分别如下;local_costmap
2015-11-10 17:47:17
3621
原创 movebase导航和地图数据的使用 - 6 local planner如何使用global planner计算出的路径规划和自己的local costmap数据完成避障
具体需要看看一下localplanner如何循环控制底座移动。Globalplanner会使用dijkstra算法找到一条最短路径plan叫做globalplan,因为planthread一直在运行,所以这个plan一直在更新,所以只要globalcostmap一直在变化,那么这个globalplan也会一直变化。有了globalplan,就可以把他设置给localplanner.
2015-11-10 17:44:48
2436
原创 movebase导航和地图数据的使用 - 5 actionlib在movebase中的使用
http://wiki.ros.org/actionlibhttp://wiki.ros.org/actionlib/TutorialsSimpleActionServer和SimpleActionClient基于actionlib实现。client和server之间靠ros的topic或者service机制通讯。actionServer向client提供了一种可以发送reques
2015-11-10 17:42:20
2082
原创 movebase导航和地图数据的使用 - 4 movebase 如何处理target请求
1. 第三方向/move_base_simple/goaltopic发送消息,消息包含一个新的目标=》MoveBase::goalCB函数响应。2. MoveBase::goalCB向/move_base/goal转发消息。我们有理由相信。向/move_base/goal发送的消息会导致actionserver的相应callback被调用因为movebase建立了一个act
2015-11-10 17:41:41
1209
1
原创 movebase导航和地图数据的使用 - 3 movebase的初始化分析
MoveBase::MoveBase(tf::TransformListener& tf) : tf_(tf), as_(NULL), planner_costmap_ros_(NULL), controller_costmap_ros_(NULL), bgp_loader_("nav_core","nav_core::BaseGlobalPlanner"), blp_load
2015-11-10 17:40:19
1290
原创 movebase导航和地图数据的使用 - 2 turtlebot中Move base的launch文件分析
ROS navigation stack with velocity smoother and safety(reactive) controller --> velocity_smoother.launch.xml"/>safety_controller.launch.xml"/> //所有参数都会默认位于nodename “mo
2015-11-10 17:39:02
1100
原创 movebase导航和地图数据的使用 - 1 move base overview
The move_base package provides an implementation of an action (seethe actionlibpackage) that, given a goal in theworld, will attempt to reach it with a mobile base. Themove_base node links together
2015-11-10 17:37:06
783
原创 rosnode中使用xmlrpc建立topic之间链接的一些知识点
rosmaster是一个中转。每个node都是从roscpp中继承了一堆东西。1. topic的消息如何来的当一个nodesubscribe一个topic时,该node就会建立一个subscription结构。含有一个subscriptionQueue,用来保存收到的msg.谁往queue里面填冲消息?首先了解一下TransportPublisherLink,对
2015-10-13 18:52:12
1289
1
原创 urdf的例子分析
//一个圆柱在正中间。 //一个box. //此leg先沿着自己的原点,也就是base_to_right_leg的坐标沿y轴旋转1.5...,然后沿z轴负方向移动0.3. //链接点,这个链接的位置是从原点向x(左边)偏移0.22,向z(上方)偏移0.25,这个链接点的位置就成了right_leg的原点
2015-10-08 11:38:45
334
原创 给local map增加超声波传感器数据的各个步骤
1.首先要定义urdf。定义好要使用的sensor的角度,位置,和frame名字。2.然后将sensor数据在kobuki底座中读取出来,发送到一个topic上。3.给costmap2d中增加一个layer监听上述topic.一些修改配置文件的资料可见:http://wiki.ros.org/navigation/Tutorials/RobotSetupcostma
2015-10-08 10:20:56
1417
原创 增加超声波传感器
1.首先要定义urdf。定义好要使用的sensor的角度,位置,和frame名字。2.然后将sensor数据在kobuki底座中读取出来,发送到一个topic上。3.给costmap2d中增加一个layer监听上述topic.move_base package包含了planner,用于指定一个目的地,规划路径。他含有两个costmap,一个global的,一个local的。
2015-09-29 18:18:13
569
转载 android安装busybox
[Android] 为Android安装BusyBox —— 完整的bash shell大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽。是否想过在Android上使用较完整的shell呢?用BusyBox吧。不论使用adb连接设备使用命令行还是在手机上直接用terminal emula
2015-09-10 11:34:40
175
原创 网络adb调试
插上usb,adb tcpip 5555 //让adbd监听5555端口adb connect 10.2.xx:5555 //链接手机,之后可以断开adb shell // 登录手机shell. 此时已经不用usb了完毕后,adb disconnect 10.2.x.xadb usb可以切换回usb模式
2015-09-09 16:50:43
157
原创 memory corruption检查的一些工具
工作调试ROS底座遇到内存corruption问题,找了一些工具可供试用:1. gcc的mcheck,没有有效的错误,错误多,但没有研究价值。2. efence, 可以见测内存越界,但是不支持c++new, delete.结果是会在很多new操作符处crash.3. Duma, efence的improve版本,支持c++,但是我用的时候跑nodeletmanager就会直
2015-09-09 13:18:08
1495
原创 学习预测加载
内容目录1 PrefetchDNS 21.1 prefetchDNS干了什么 21.2哪些地方调用了prefetchDns 51.3 flushPendingDNS 81.4 DNSCacheDb 82 PreConnect 92.1 preconnect作了什么 92.2哪些地方调用了preconnect 102.2.1浏览器原本调用pre
2015-09-09 12:03:43
309
原创 学习广告过滤
1 Adblock plus rules1.1 Filter rulesHardcoded rule,直接写个网址,可以使用wildcasts.exception rules: “@@http://example.com”,这个网站的所有内容都不block标记规则的开头和结尾:|, “swf|”,匹配结尾是swf的url.“abc” 等价于“*abc*”
2015-09-09 12:02:16
492
原创 Introduction to algorithms 3rd 阅读总结和部分习题分析
内容目录 1 一些网站 2 2 Chapter 3 growth of functions 2 3 Chapter 4 divide and conquer 3 3.1 4.1 max sub array问题。 3 4 sorting 7 5 chapter 2.1 insert sort 7 5.1 插入排序的改进shell sor
2015-09-09 12:00:22
1474
原创 程序员实用算法阅读总结
1 Chapter 1减少io,和函数调用次数针对io考虑调整输入,输出缓冲大小。针对调用次数,考虑使用内联或者宏,尽量避免递归2 chapter 4 查找字符串A中找子串bruteforce查找,可以先判断第一字符是否匹配,否则直接跳过该字符。2.1 Boyer-moore查找,启发式查找。英文:http://www.stoimen.c
2015-09-09 11:57:46
328
原创 chromium+blink网页加载流程
内容目录1加载网页的大致过程 12加载网页详细过程 12.1.Browser准备加载 12.2.Render准备加载 22.3.browser的实际加载工作 32.3.1 browser开始加载request 32.3.2 http层的工作 32.3.2.1收到responseheader 42.3.2.2收到response
2015-09-09 11:54:08
994
原创 chromium网络栈学习
内容目录1 Overview 31.1常用工具 61.2 SSL,TLS 61.2.1常识 61.2.2 browser代码中ssl版本的选择以及握手的过程 71.3额外需要细节性分析的部分: 201.4 http协议 201.4.1 http authencation 201.4.1.1 basic authentication 201
2015-09-09 11:52:20
2209
原创 blink渲染知识16 - raster干了什么
我们知道,在childcompositor里,implthread里,pendingtree被raster之后,才会被activate成activetree.而且raster任务由一些rasterthread执行,那么这些raster操作干了什么?看看这篇chromium的官方英文文章:https://www.chromium.org/developers/design-documen
2015-09-09 11:49:01
1303
原创 blink渲染知识15- gl命令的生成和处理(command buffer)
看看下面的stack:是在render线程合成时的callstack,主要是处理compositorframe中的renderpass里面的quard,并把它们draw到gl的context上面。我们主要研究从此开始的gl的操作的过程。他调用gl操作开始绘制:#0Init (_size=5,_command=299, this=0x85f00730) at../..
2015-09-09 11:47:29
782
原创 blink渲染知识14 - 阶段总结
总结一下执行流程。4.5.0上,ui线程,impl线程就是执行childcompositor的ui线程。1.ui线程onDraw=>awContents.onDraw会调用chilidcompositor来使用其activelayer tree合成一个compositorframe,也就是调用BrowserViewRender::onDrawHW.并向webcore
2015-09-09 11:46:23
448
原创 blink渲染知识13- 硬件渲染之beginframe的处理以及一些后续步骤
执行线程是Chrome_InProcRenderThread,应该就是webcore线程。下面是webcore线程执行paint操作的内容。ThreadProxy::BeginMainFrame(->layer_tree_host()->AnimateLayers( //layer的动画计算layer_tree_host()->Layout(); //从新计算layoutboo
2015-09-09 11:45:21
1535
原创 blink渲染知识12 - 硬件渲染之触发beginframe
ThreadProxy::BeginMainFrame会触发renderlayer tree中各layer的paint.那么谁触发的BeginMainFrame?ThreadProxy::ScheduledActionSendBeginMainFrame-> Proxy::MainThreadTaskRunner()->PostTask(FROM_HERE,base::
2015-09-09 11:43:26
1182
原创 blink渲染知识11 - renderlayer tree的构建点
在收到了数据后,网页加载完成,创建rendertree时,也会对应创建renderlayer.创建renderlayer的Callstack:#0 WebCore::RenderLayer::RenderLayer (this=0x69014000,renderer=0x69004000, type=) at../../third_party/WebKit/Source/cor
2015-09-09 11:40:59
398
原创 blink渲染知识10 - render tree的构建点
何时在哪里thread构建的,先找到构建rendertree的code.有RenderTreeBuilder类。上面1.16rendering basics中讲了,RenderTree是通过对dom节点执行attach操作建立的。在dom被建立时,对其节点执行attach操作,即可创建renderobject,建立rendertree.当docuemnt关闭,或从dom中移除一个节
2015-09-09 11:40:02
326
转载 blink渲染知识9-chromium webview硬件渲染的演进
4.4的硬件渲染关键点:独立线程使用gpu rasterrize,并且ui线程合成时,也是在gpu上操作数据。http://blog.youkuaiyun.com/hongbomin/article/details/40896313原创文章,转载请以链接形式注明原始出处为http://blog.youkuaiyun.com/hongbomin/article/details/40896313摘要:从Andro
2015-09-09 11:39:07
580
转载 blink渲染知识8 - 软渲染
我觉的软件渲染的关键点:ui线程软件raster,并且软件合成。http://blog.youkuaiyun.com/hongbomin/article/details/17931223摘要渲染过程可以形象地理解为用一支笔将特定的内容在一张纸上画出来,然后呈现在屏幕上,而对笔和纸张的选择决定了渲染的方式。在Chromiumon Android: 认识ChromiumWebView一文中我们提到
2015-09-09 11:38:09
358
转载 blink渲染知识7-webview和android的交互
http://blog.youkuaiyun.com/hongbomin/article/details/18499295WebView本身是一个layout, 他和android的view系统交互的方法是:当webview本身内容有变化时,需要更新到android系统时,WebView的invalidate函数被调用,实际的调用栈:BrowserViewRenderer.cc中->clien
2015-09-09 11:36:34
628
转载 blink渲染知识6 - floats
Posted by DaveHyatt onWednesday, August 15th, 2007 at 4:33 pmA float is a renderer that is designed to shift all theway to the left side or all the way to the right side of a paragraph.The
2015-09-09 11:35:31
248
转载 blink渲染知识5 - absulte/fixed and relative positioning
Posted by DaveHyatt onTuesday, August 14th, 2007 at 1:32 pmThe position property in CSS can be used to position anobject relative to a specificcontaining block. It has fourvalues: ‘static’, ‘abs
2015-09-09 11:34:26
848
翻译 blink渲染知识四 - layout basics
Posted by DaveHyatt onFriday, August 10th, 2007 at 2:01 pmWhen renderers are first created and added to the tree, they haveno position or size yet. The process by which all of the boxes havetheir
2015-09-09 11:33:25
320
翻译 blink渲染知识三- blocking and inlines
RenderBlock表明一个物体代表一个block,他内部的对象要被竖着排列。他内部的对象要么都是RenderBox,要么都是RenderLine.RenderLine表明一个物体,这个物体从其外部来看,是要被放置到一个line内部的。他内部的物体必须全都是RenderLine.为了满足上述原则,webkit会手动加入一些renderobject。css标准里讲,一个Object的i
2015-09-09 11:32:18
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人