13 风海流

尚未进行身份认证

我要认证

Robotics Institute, Carnegie Mellon University huyaoyu.com

等级
TA的排名 3w+

ROS camera_calibration 源码阅读笔记

一直在使用ROS的camera_calibration进行単目和双目的相机标定,但是从来没有关心过具体实现,我所知到的仅限于camera_calibration后端也是使用的OpenCV进行的标定运算。今日直接使用OpenCV进行相机标定时,发生了一些奇怪的现象,但是这些现象在使用camera_calibration时从未遇见过,看来其鲁棒性是不错的,所以今天打算阅读一下源码学习一下。以下是我个人的笔记,并不最求全面,而是针对我个人的经验而记录的。主要记录源码中和我平时的用法不同或者我个人感觉源码处理恰当

2020-09-16 02:49:20

A Tour of C++笔记

2 User-Defined Types构造函数的Member initializer list 可以用花括号代替圆括号。enum class:enum class Color { red, blue, green }; enum class Traffic_light { green, yellow, red }; Color color = Color::red;Color redColor = Traffic_light::red; // Error;int i = Color::red

2020-07-19 05:16:40

安装测试CGAL和read_ply()

起因想用CGAL做一些关于mesh的操作,我的上游输出是一个用PLY文件存储的surface mesh,我希望将其转换为CGAL的格式。经过Google发现,较新的CGAL版本带有read_ply()函数,而当前系统配套的CGAL版本并不支持,于是需要安装新的CGAL。How hard can it be?! 但是事实是,这花去了几乎一下午的时间。本机系统Ubuntu 18.04cmake 3.16Qt 5.9.5clone repo从CGAL的Github clone 到本地。当前CGAL

2020-07-12 11:33:55

numba nopython mode 不支持numpy.int类型

一则小记,numba库并不支持NumPy的int类型,需要指定整型的位宽,使用int32和int64都没有问题。测试代码如下本机系统Ubuntu 18.04, Python 3.6.8, numba 0.46.0, NumPy 1.16.4import numbaimport numpy as npimport sys@numba.jit(nopython=True)def test_zeros(H, W): # array = np.zeros((H, W, 3), dtype=np

2020-06-01 05:49:42

octomap 简单自定义 OcTree

之前的一篇博客记录了我安装调试octomap的过程。这里记录一下实现一个非常简单的自定义OcTree。首先octomap 内部有定义好OcTree类,使用OcTreeNode作为node类型。实际上OcTree即是从OccupancyOcTreeBase<NT>派生出来的,NT为OcTreeNode。我现在的需求特别简单,就是需要在保持OcTree功能的基础上,增加OcTree上node存储的数据内容。这些新加进来的数据不用参与occupancy map的生成,仅作为跟随max depth

2020-05-27 01:48:21

C++11 C++14 C++17 move semantics

最近刚刚学习了一下从C++11开始支持的move semantics,C++还是很神奇的。下面代码测试了如下想法swap 两个plain array。swap 两个array of objects。从函数返回std::vector。对std::vector进行直接赋值。从函数返回对象。对对象赋值。本机系统 gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0。编译debug版本,没有显式开启编译优化。通过测试得到如下现象:通过单步调试,发现在swap两个

2020-05-25 10:50:09

C++ Core Guideline 笔记03

F: FunctionsF.1 “Package” meaningful operations as carefully named functions这段很令人期待,但是看过以后感觉什么都没说。如何算作“meaningful operations”什么样算是“carefully named”。在实际操作过程中,经常遇到一个函数的长度超出一个显示器范围的情况,一般我认为这时可能会需要将这个函数破解为多个小段,然后每个小段负责执行一部分功能。但是这么做并不能产生能够重用的代码,而且有时候需要将参数不断的

2020-05-24 13:13:59

C++ Core Guideline 笔记02

I.1 Make interface explicit不好的示例->int round(double d){ return (round_up) ? ceil(d) : d; // don't: "invisible" dependency}这个例子我主要理解是这样的,函数名是round但是控制逻辑中有在调用时非常可能被忽略的全局变量round_up。我理解round_up应该出现在参数列表里。但是这种设计非常有可能出现在类的成员函数里,设想如下代码片段(非原文)class

2020-05-24 13:13:32

C++ Core Guidelines 笔记01

CppCoreGuidelines由C++原作者发起的一个modern C++ guidelilne. 在这里,配套的github页面在这里。CppCoreGuidelines 配套一组 Guideline Support Library,源码位于这里。我只记录了对自己有启发的内容。笔记中的大部分代码片段是复制于原文,我自己增加的代码片段会标注清楚。P.1 Express ideas directly in code.class Date {public: Month month() c

2020-05-24 13:13:03

ubuntu 18.04 编译octomap

源码位置https://github.com/OctoMap/octomap/blob/devel/octovis/README.mdcommit 74c48ae on Apr 26, 2020.本机系统Ubuntu 18.04,qt5,cmake 3.14.6。编译libQGLViewer for octovis直接cmake configure octomap会报出无法编译libQ...

2020-05-07 08:03:52

C++ book list

转自SOhttps://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282

2020-03-22 02:59:44

boost disjoint set 实例

前言最近,需要用C++实现一个简单的disjoint set,查了一下STL,貌似没有已经做好的库,但是boost有。于是我决定测试一下。测试系统是Ubuntu 18.04 LTS,gcc 7.5.0,boost 1.65.01。Boost 的disjoint set documentation在https://www.boost.org/doc/libs/1_72_0/libs/disj...

2020-03-21 01:39:23

PCL NormalEstimation 源码结构

前言最近需要借鉴PCL的设计写一个处理点云的程序,主要参考了其中NormalEstimation部分的源码。这里总结一下该部分源码的结构。当前参考的PCL版本是 1.10.0。NormalEstimationNormalEstimation类的继承关系如下NormalEstimation->Feature->PCLBase这三个类的定义位于源码根目录下的common/i...

2020-03-19 09:14:43

pytorch3d 上手测试

前言最近Facebook放出了PyTorch3D,用于3D Computer Vision research。尚不知都可以做些什么。最近正在做3D point cloud和mesh相关的处理,也有深度学习的东西,由于前两天nvidia的一个在线webinar,还有目前老板都对我推荐了这个,所以今天上手测试一下。后记测试完所有4个目前的tutorial之后,可以简单总结如下。PyTorch3D...

2020-03-15 06:39:48

Python3 multiprocessing joinable queue 模板

最近需要在服务器上处理一批文件,每个文件的处理过程很简单,基本就是读入文件,计算一些统计值,然后把统计值汇总。一想这可以多线程啊老铁!调试了一下Python3的multiprocessing,这里留下一个模板以备之后使用。程序运行的逻辑是这样的主进程扫描需要处理的文件,生成文件列表。主进程创建job队列和result队列。此时队列都为空。主进程创建所有子进程。子进程启动。监听来自job队...

2020-03-02 07:15:38

PyTorch leaf node

起因今天被PyTroch tensor的requires_grad搞了一把。具体情况是创建一个tensor和在后续的使用过程中,对requires_grad的取值会影响到python存储的变量是否为leaf node。说起来很抽象,直接上代码。(有关leaf node,请参考我的另外一篇博客,https://blog.csdn.net/huyaoyu/article/details/81059...

2019-11-27 10:53:26

Python 生成带有RGBA信息的 ROS PointCloud2 message

起因最近有一个工作是需要把一组三维点以ROS PointCloud2 messge的形式进行publish。并且需要使用python环境。原始点云只有坐标数据,需要根据点距离坐标原点的距离对点云进行上色。经过通过参考一些开源项目的源码,并通过NumPy的structured array功能实现了PointCloud2 message的生成。其中需要注意的是一点,PointCloud2 mes...

2019-11-22 02:25:27

PyTorch 学习笔记 (3) PyTorch 1.0+ C++/CUDA extension

参考教程PyTorch官方教程本机系统Ubuntu 18.04 LTSNVIDIA GeForce GTX 1080 with driver 430.50CUDA V10.1.243python 3.6.8 virtualenvtorch.version == ‘1.2.0’Visual Studio Code配置由于我使用的是python 的virtual environme...

2019-11-20 06:07:13

PyTorch dataloader 中的随机数

起因最近用PyTorch训练一个新的CNN,需要在输入的训练图像上增加简单的噪声,最开始是利用NumPy提供的随机数函数去添加噪声,基于PyTorch提供的dataloader进行图像加载。在使用dataloader时,发现当worker数量大于1时,每个worker生成的随机数的序列是完全一样的。虽然每次启动dataloader,NumPy给出的随机数序列不同,但是每个worker使用的是一模...

2019-10-31 00:41:18

OpenCV modules

以下列表是从opencv和opencv-contrib 的cmake 输出截取的。我禁止了python2和world。arucobgsegmbioinspiredcalib3dccalibcorecudaarithmcudabgsegmcudacodeccudafeatures2dcudafilterscudaimgproccudalega...

2019-10-16 01:58:52

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。