12 风海流

尚未进行身份认证

Robotics Institute, Carnegie Mellon University huyaoyu.com

等级
TA的排名 3w+

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

kalibr使用记录

起因本来一直都是直接使用ROS的camera_calibration package标定stereo camera的,最近有个工作需要用kalibr标定。还从来没用过,倒腾了一阵,发现还起步比较曲折,但是最后还是挺顺利,这记录一下。使用的平台是Ubuntu 16.04 LTS, ROS kinetic. kalibr直接从github上clone下来。kalibr 编译Github的rea...

2019-06-11 04:37:25

修改OpenCV SGBM代码实现per-pixel searching range constrain

新增StereoSGBM实现需要确认我们正在修改的头文件是处于OpenCV的源码路径,而不是OpenCV的安装路径。OpenCV在安装后, 会复制头文件到安装路径。增加MODE标签修改calib3d.hpp内, StereoSGBM类中枚举类型的定义。enum{ MODE_SGBM = 0, MODE_HH = 1, MODE_SGBM_3WAY = 2, MODE_HH4 ...

2019-05-30 02:01:19

并不习惯处理大整数导致 SIGSEGV 或 SIGBUS 或 "Error: free(): invalid next size"错误

概述最近在调试一段用于处理图像的程序, C++的代码, 需要对每个pixel逐个处理. 在小图像(大约VGA的size)上调试好了需要处理4k size的图像, 一直出现各种离奇错误, 都是和内存有关的, 例如各种SIGSEGV和SIGBUS异常, 在调用free()函数时发生"Error: free(): invalid next size" 错误. 经过仔细排查发现实际上是所用的整形数据类型...

2019-05-14 07:33:22

GridMap: 一个用于强化学习 (reinforcement learning) 训练的二维连续坐标栅格地图

大家好, 我刚刚做了一个简单的2D连续坐标栅格地图, GridMap. 我们使用GridMap进行我们的强化学习 ( reinforcement learning )算法验证.在GridMap中, 用户可以创建一个起始block和一个终止block, 另加多个障碍block. 虽然称为栅格图, 但agent坐标是连续值. 用户可以定义不同block类型的reward/penalty值. 地图和...

2019-05-10 12:06:29

Ubuntu + CUDA + CMake ( + Eigen !?)

目录起因实例起因C++原有实现有点慢,尝试CUDA加速,突发奇想,能不能在kernel或者device函数里面使用eigen,因为eigen是header file only的。然后发现居然真的可以,不过对于kernel函数而言,视乎有点绕。实例在原来CUDA的实例上又搞了一个用eigen的例子。指定图像中的某一个像素为中心,在这个像素附近的窗内对所有像素计算e的指数,再求平方,再窗内像素...

2019-05-02 10:09:20

查看更多

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