Category: 文章

Factfulness

...一分为二就是一个常见的误区,非黑即白通常是片面的论断、事物处在的阶段不会是只有低和高,一定有中间的过渡状态。而事实上处于中间状态的可能是大多数。这里作者以发展中国家和发达国家举例,虽然这个概念大家经常提,但是从各个维度看各个国家的指标,其实大多数国家是处于两者之间的。作者提到可以尝试把两段改成四段,不仅限于这个概念,常常会让我们注意到大多数所处的位置。

ICCV 2019 Notes

第一次参加ICCV。和CVPR相比,会议安排日程相对宽松,还预留了半天休息的时间。Poster区域被围绕在参展的厂商的展台中间。可能是参会的人比较多,感觉Poster区域还是太小了,通道里人挤人。在ICCV参展的厂商明显比CVPR少,而且没有自动驾驶的小车也没有大卡车。

最近读的书

大概是三个月前开始的,断断续续地看完了石黑一雄的《长日将尽》。书是以一个大管家的视角来写的,大管家以滴水不漏的口吻在回忆。...

[读书笔记] How to Write a Lot: A Practical Guide to Productive Academic Writing

最近读了这本书 How to Write a Lot: A Practical Guide to Productive Academic Writing。书很短,作者很幽默,所以也很容易读。这本书主要讨论如何能够高产的写作。提出的方法很简单,核心的信息就是 “Instead of finding time to write, allot time to write. Prolific writers make a schedule and stick to it.”。他不谈怎样激发你的兴趣,怎样找到适合自己的写作方法。相反,作者对这类方法都进行了毫不留情的吐槽。书中的观点是,正确的高产写作方法只有一个,定下一个固定的写作时间,每天坚持写。作者还针对大家常用的逃避写作的借口进行了批判。总的来说,感觉作者挺毒舌的,哈哈。 比如,很多人会说自己找不到合适的时间写作。作者的回应是 “Instead of finding time to write, allot time to write… you write during your allotted times and then forget about it.”。很多人也喜欢说自己找不到大块时间写作所以总是没有产出,“the simple

Bellevue 往返 Olympic Game Farm 一日游记

一个周日和几家朋友一起带娃们去附近的Olympic Game Farm看动物。这个地方和我们以往去过的动物园不同。开车进去,不能下车。园内放养着各种偶蹄目动物,车子被它们团团围住,索要全麦面包。熊虽然是在栅栏后面,但也可以很近距离的喂食。感觉很有趣。

Crazyflie 2.0 + Flow Deck

Crazyflie是一个小型四旋翼无人机平台。开源并且文档丰富,很适合做相关的研究。最新的型号是Crazyflie 2.0。 整体很小,自然续航时间和载重也有限。具体参数可以参见官网。 很多做机器人控制的实验室在用这个平台,于是很容易看到有意思的Demo。比如这个Swarm 还有这个奇怪的控制盒子: 这些精准的控制大多依赖于准确并且贵并且贵的Motion Capture系统。Crazyflie本身Sensor有限,在没有外部反馈的情况下是很难控制的。 不像是大疆那些消费级的无人机,很容易就可以飞的挺好。如果用官方的手机App来飞,想做到悬停就要稳定的给它适合的Thrust,基本上很难。 所以,当官方出了这个Flow Deck的时候,立马买了。据说一发布就卖断货了,除了说明产量小以外,也说明刚需旺盛。 Flow Deck可以为Crazyflie提供简单的位置信息,让它可以在没有外部Motion Capture系统的情况下稳定的悬停。 很明显的可以看见板子上有一个向下的摄像头。Flow也就是指Optical Flow。 这就是小飞机和Flow Deck: 可以用原装的卡电池的架子透出板子的部分,把Flow Deck固定在小飞机下面。仔细看板子上有一个小箭头表明正确的安装方向。 然后需要做的是升级小飞机的固件。 这个demo.py可以让crazyflie悬停在0.4米高的位置半分钟 import logging import time import cflib.crtp from cflib.crazyflie.syncCrazyflie import SyncCrazyflie URI = 'radio://0/80/250k' # Only output errors from the logging framework logging.basicConfig(level=logging.ERROR) if __name__ == '__main__': # Initialize the low-level drivers (don't list the