自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SilverBullet

Something about computer vision and quadcopter.

  • 博客(31)
  • 收藏
  • 关注

原创 不要滥用OO

近期想把自己所做的任务的共用部分抽象出来,做成通用的基类。这样就能把不同数据集,不同模型集成到一个统一的框架中,提高开发效率,规范开发标准,提高代码可读性。但是在设计其中一个数据集基类时遇到一个问题。由于所有的数据集类都符合下面的流程:解析标注文件->解析数据文件。用户需要手动控制解析数据文件的时机,因此我想把解析标注文件的工作放到基类中。即基类有一个抽象方法parse_ann_file...

2019-03-07 23:48:48 380

原创 关于自律的一点感悟

我在山东的一个农村长大。从小父母忙于生计,没办法对我的学业做过多干涉。因此习惯于将所有事情拖到最后一天做。比如说,作业拖到星期天晚上写,写不完就抄答案。上了大学也是一样。每次考试都是最后一天开始突击。有时第二天上午考试,当天的晚上十点才开始复习。神奇的是,我这种风格还能一直保持不错的成绩。当然这也充分地说明了大学里的考试是多么的水。但是读了博士以后一切都不一样了。读博更像是一场修为。在这里没有...

2018-12-28 22:59:23 2910 6

原创 Linux动态链接那点事儿(`cmake find_package,linux shared library`路径详解)

Motivation经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动把头文件和动态链接文件配置好。比如说,在Linux下面工程依赖了OpenCV,只需要下面几行就可以完全配置好:add_executable(my_bin src/my_bin.cpp)find_pac...

2018-11-26 01:00:22 1156 1

原创 Boustrophedon Cellular Decomposition的Python实现

Boustrophedon Cellular Decomposition的Python实现算法简介Python代码执行结果算法简介BCD(Boustrophedon Cellular Decomposition)是一种栅格地图的分解方法。完成该分解后,每个cell都可以通过一个牛耕式路径遍历。不同cell之间通过旅行商问题获得最优路径即可做到全地图的覆盖式清扫。详情可以参考论文Choset...

2018-11-05 13:19:06 4143 4

原创 重新理解函数空间(上)

重新理解函数空间(上)读论文时遇到了可再生核希尔伯特空间。尽管之前在雁栖湖上课学习SVM时听郭嘉丰老师讲过一嘴,但还是被这个名词吓得不敢动弹。张颢老师曾说,对一些经常用到的知识要有“小脑反应”,看待这些名词都不需要经过大脑,这才是最高境界。于是下决心花一天的时间深入理解它。万幸发现了几个非常好的教程,总算是能够较为直观的理解了,这里把自己的感想写下来。这部分内容包括一些常见的空间的定义,包...

2018-08-15 20:57:57 13614 9

原创 利用PyCharm生成类似于Pytorch的高质量注释

在学习pytorch时,无意间发现pytorch的注释写的非常详细。在pycharm中,输入函数名后直接按Ctrl+Q即可快速打开注释窗口。随便贴几个感受一下: 可以看到,不仅可以在注释中添加参数表格、说明、examples,还可以插入图片、超链接和类型等信息。 其实他们是用了谷歌的python docstring format。只需要在pycharm中稍微设置一下,便可以自动生成这种...

2018-06-07 15:43:06 1414

原创 【论文阅读】Non-local Neural Networks

Non-local Neural NetworksNon-local Neural Networks是何凯明大佬组最近发表的一篇文章。一作Xiaolong Wang,本科毕业于华南农业大学,研究生是中山大学,博士去了CMU,然后做出了这么好的工作,可以说非常励志了。类似于Batch Normalization,这篇文章也提出了一种不改变输入输出大小的层,可以直接集成到现有的网络结构中。思想...

2018-05-02 16:02:38 4962 1

原创 【论文阅读】Aggregated Residual Transformations for Deep Neural Networks Saining(ResNext)

这篇文章是kaiming大神的组的工作,在resnet上继续改进。一作谢赛宁,2013年从上海交大本科毕业后去UCSD读博士,现在他引1400+了(不知道我毕业时能不能有这个的一半QAQ),导师是Zhuowen Tu。Introduction现代的网络设计中通常会次堆叠类似结构,如VGG,Inception,Resnet等,从而减少网络中超参数的数量,简化网络设计。Incept...

2018-05-02 11:08:07 3701 1

原创 【论文阅读】mixup: BEYOND EMPIRICAL RISK MINIMIZATION

mixup: BEYOND EMPIRICAL RISK MINIMIZATION作者Hongyi Zhang,本科北大,发这篇文章的时候是MIT的博士五年级学生。这篇文章是和FAIR的人一起合作的。Introduction摘要中,本文提到了mixup方法可以让神经网络倾向于训练成简单的线性关系。从而降低模型的过拟合现象。实际上,现在的神经网络规模通常是和数据集规模成正比的。训...

2018-04-26 19:44:18 3862 1

原创 Adaboost原理及简单的Python实现

原理Adaboost原理方面网上早已汗牛充栋,李航的《统计学习方法》中写的简单易懂,这里直接搬过来。 即每次训练一个弱分类器,之后为每个弱分类器分错的样本增大权重,为每个分对的样本减少权重,然后训练新的分类器。最后对分类器进行加权平均。实现这里直接采用李航书中的例子。  阈值弱分类器实现阈值弱分类器时要注意,这里的分类器除了含有一个阈值,还应有一方向。简单来说就是下面二图(这里一开始困惑

2018-03-08 13:24:42 7601

原创 分枝限界法解带期限作业调度问题

这是在国科大的算法课上学到的算法,同时也是这门课上的一个作业。在做这个作业时遇到了很多的坑,网上查到的资料也很少,而且很多都是错的,因此在博客上记录下解决问题的过程。问题描述算法概述 这个伪代码中的几个函数解释如下: - cost(T): 表达该答案节点造成的损失值 - u(T)u(T): u(T)=∑i∉apiu(T)=\sum\limits_{ i\notin a}p_i,即该节点及其

2017-12-17 02:34:44 4812 4

原创 使用ROS的rqt_plot对任意语言的程序进行可视化

简介经常做数据处理的同学可能比较熟悉MATLAB或者Python,而做图像或者机器人用到最多的其实是C和C++。经常需要在调试时实时看到某些数据的变化趋势,而C++却没有一套好的可视化库(或者需要很麻烦的配置。)于是写了这个工具。调用者只要在程序里打印需要实时显示的数据,然后将控制台信息通过管道传给Python程序即可自动在rqt_plot里显示,并自动发布ROS话题。效果使用方法及源码#! /us

2016-12-28 16:26:18 4800 1

原创 对C++的一点吐槽

不得不说C++真是反人类啊。同样一个函数,需要在头文件中声明,在源文件中实现。具体到Qt实现的时候,对于一个小功能,需要在头文件中注册一个Slot,注册一个Signal,声明一个发送signal的函数,再在源文件中写出Slot的实现,再在初始化时将signal和slot链接到一起,最后还要实现函数emit Signal。具体到ROS实现的时候,对于同一个话题,需要在源文件中声明话题名,订阅器,订阅函

2016-12-19 14:39:39 1116

原创 区域填充之扫描线种子法的Python实现

前言最近在帮学长做语义地图导航与规划,遇到了这样的问题。 将学长分割好的地图里的每一个白色区块标识出来,以便于后面语义地图的导航。 最开始我想到了种子法,但是由于使用了递归,当地图规模增加时程序就跑不起来了,(Python默认最大递归次数为1000次,即使用sys.setrecursionlimit()强行设置成很大的数最多也只能递归20000多次便会崩溃,而MATLAB的递归更是慢的抠脚)

2016-11-22 22:10:55 7328 7

原创 在CLion中使用Qt

做这件事的起因是因为自己要频繁的写ROS,有的应用难免需要采用图形界面编程,第一想到的肯定是Qt。然而qt使用自己的qmake进行管理,但ROS使用的是CMake。本文介绍了如何在CLion中配置使用qt4。Qt编译框架Qt引用了信号和槽机制,因此在语法上对C++进行了部分扩充,qt提供了moc软件对代码进行预处理。Qt的ui文件需要用uic软件生成ui_filename.h文件供qt中的代码文

2016-11-16 15:11:05 10099 3

原创 ROS动态链接库的配置

最近的一个项目,客户的需求是把ROS库拷到电脑上直接能运行,而电脑无法联网,恰好我们的程序依赖了几个动态库,无法通过apt-get直接安装。而客户操作能力有限,最好把编译好的文件拷过去可以直接运行。 上网查阅了一下,程序运行时的动态库查找位置位于$LD_LIBRARY_PATH这个目录下面。echo了以后,结果如下:/opt/ros/indigo/share/euslisp/jskeus/eus/

2016-11-08 09:55:44 3845

原创 二维SLAM数据集的获取与处理

经常需要做一些SLAM算法的测试,由于直接放到机器人上太麻烦,而使用gazebo的仿真器又不能完全模拟现实世界中机器人的表现,而且算法运行效果也无法考量。选择数据集进行测试是一种比较好的解决方法。本文主要说明了如何通过wget自动化获取SLAM benchmark上的数据内容,通过python对数据集进行处理并打包成rosbag,最后再在roslaunch文件中配置nav2d_karto进行建图。

2016-10-31 20:49:34 4335 10

原创 斯坦福机器学习笔记-Lecture 1,2

斯坦福机器学习笔记

2016-08-27 16:09:01 790

原创 通过TurtleBot学navigation与ROS的笔记

TurtleBot运行的几条关键语句#启动仿真环境roslaunch turtlebot_gazebo tuetlebot_world.launch#键盘控制roslaunch turtlebot_teleop keyboard_teleop.launch#rvizroslaunch turtlebot_rviz_launchers view_robot.launch测试Kinect(仿真

2016-08-16 18:54:38 1639

原创 Python办公

今天帮招办处理几个Excel表格,都是一些机械的重复操作,所以考虑使用Python和VBA合作来完成自动化操作,现将操作步骤记录下来以供以后使用。Python批量修改文件名这个很简单,只需要以下几行代码即可import osfor i in range(80): filename = "xs2016-%d系-带专业代号.xlsx" % i dstfilename = "xs2016

2016-07-28 01:25:29 2437

转载 深度优先搜索

还是oj,刷到了深度优先搜索。以后做导航和路径规划应该会用到,因此记下本题思路。 题目连接:http://ac.jobdu.com/problem.php?pid=1456题目题目描述: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的

2016-07-10 21:01:01 364

原创 MySQL备忘录

进入mysql mysql -u root -p更改默认编码方式为UTF-8 http://blog.csdn.net/red4711/article/details/6007248备份和还原 http://blog.csdn.net/quietprofound/article/details/2947197常见指令show databases; --显示当前数据库create da

2016-07-08 11:38:27 374

原创 OpenCV Java imshow()的实现

本文实现了java下OpenCV官方API中被阉割掉的的imshow()方法

2016-06-17 04:35:15 7671 4

原创 TUM ARDrone源码阅读

TUM ARDrone源码阅读TUM ARDrone源码阅读简介安装与运行方法实验效果整体概览stateestimation模块简介TUM ARDrone是TUM(慕尼黑工业大学)Vision Group开发的一款飞行器自动导航ROS程序包。该程序将PTAM算法与IMU信息进行扩展卡尔曼滤波,从而对飞行器进行位姿估计。 团队主页:https://vision.in.tum.de/rese

2016-06-07 11:15:51 2034 3

原创 OpenCV开发小问题汇总

1. Ubuntu下OpenCV找不到nonefree模块(SIFT等算法)打开终端,执行以下语句sudo add-apt-repository --yes ppa:xqms/opencv-nonfreesudo apt-get update sudo apt-get install libopencv-nonfree-dev参考链接

2016-05-06 15:50:43 347

原创 pixhawk原生固件笔记

常用资料 名称 简介 官方文档 虽然是官方文档,但是很多地方并没有讲清楚 github issues 最全面的开发者问题集锦 被删除的官方文档(已被删除,此处为谷歌快照) 此教程详细介绍了如何自己实现一个固定翼飞控 被删除的官方文档(已被删除,此处为谷歌快照) 此教程详细介绍了如何更改自启动脚本 Freeape博客 国内一个四旋翼爱好者撰写的博客,基于老

2016-05-03 01:28:44 5898 1

原创 四旋翼动力学和仿真翻译(Quadcopter Dynamics and Simulation)

四旋翼动力学和仿真 本文翻译自Andrew Gibiansky的同名文章,该文献介绍了四旋翼的动力学模型和Matlab仿真的具体实现,对四旋翼入门非常有好处。原文如下 http://andrew.gibiansky.com/blog/physics/quadcopter-dynamics/由于Neo已经于2014年对该文章前半部分进行了翻译(从Introduction到Physics),

2016-04-29 21:27:52 11845 6

原创 【APM】第一个应用程序

第一个应用程序 此部分对应教程原文 http://ardupilot.org/dev/docs/learning-ardupilot-the-example-sketches.htmlHelloWorld代码编写及编译学习任何一种平台都从Hello World开始。由于官方教程中的方法有一些问题,因此在这里详细写一下如何在Pixhawk中运行helloworld程序。在eclipse左侧

2016-04-23 17:07:28 3075 1

原创 【APM】开发环境配置

安装PX4-toolchain什么是PX4-toolchain?px4-toochain是pixhawk官方为pixhawk在Windows下面的开发所配置的一系列工具软件,如整套的编译环境,一个类似于Linux Shell的终端软件px4-console,可以方便的执行命令行操作,一个配置好的Eclipse CDT,可以帮助我们高效阅读和编写开发Pixhawk的程序,一个串口监视器teraTerm

2016-04-23 15:02:23 6905 2

原创 APM源码导航目录

开发环境配置第一个应用程序

2016-04-23 14:13:14 1315

原创 APM源码导航

APM源码导航The navigation of APM source codeBUAA APM READING GROUPAPM源码导航The navigation of APM source code为什么要有这个项目成员简介平台介绍本教程特点其他更新方式为什么要有这个项目我们是北航的一群学生。对四旋翼具有浓厚的兴趣。网上关于APM的代码解读有很多,但是大部分都是对官方文档的机械翻

2016-04-23 14:05:38 1193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除