自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 PCL + CUDA compilation

sudo apt install libpcap-devGet Qhull from it’s GitHub repo.Modify PCLConfig.cmake.in. In the following image, modify Line 295 and add Line 305. This is from ref.Manually check and push the Configure button two times. Then push the Generate button.R

2022-01-17 08:57:57 533

原创 C++ lambda expression

示例来自于<< C++ Lambda Story >> by Bartłomiej Filipek, 主要集中讨论C++11, C++14和17乃至20没有仔细看.[x](int a, int b) mutable noexcept -> bool { ++x; return a < b; }mutable和noexcept的次序不能颠倒. mutable表示x可以修改.可以将lambda作为std::function的初始化connst std::functi

2022-01-09 05:02:27 378

原创 ids uEye camera + GStreamer + Nvidia AGX Xavier

最近课题组有几个空闲的Xavier,正好手头有一个项目要用的uEye camera,并且平行的项目里用到了GStreamer,我还不太会。这就想尝试在Xavier上链接uEye camera并使用GStreamer获取视频。Xavier是使用Nvidia SDK manager刷的JetPack 4.5,以及一些配套的软件包。操作系统是Ubuntu18.04,GStreamer 版本是1.14.5。相机型号是IDS UI-3271LE-C-HQ。IDS software suite首先安装了IDS的s

2021-07-04 11:43:43 654

原创 利用AirSim在Unreal Engine上获取全景图像

如题,在AirSim 1.4.0 版和 Unreal Engine 4.26.2 版上尝试增加全景图像和全景深度图像(panorama RGB and depth images)的获取。由于本人能力有限,折腾了很久才搞好。英文,懒,没翻译,见谅。文章在这里....

2021-05-01 08:20:38 528 3

原创 右键打开 visual studio developer command prompt

起因最近呐,需要在Windows上对Unreal和AirSim进行开发,感觉少了Linux上的“Open terminal here”有点不舒服,于是Google了一下加了个右键菜单,主要参考这里的教程。经过就是改注册表,Win键 + R 呼出运行窗口,regedit进入注册表编辑器(常规操作)。然后备份注册表,也就是File->Export。然后找到如下图所示的位置,添加一个新的Key,名为Developer cmd 2019Developer cmd 2019的内容包括一个(Defaul

2021-04-26 05:27:32 2565 1

原创 使gazebo_ros能够找到其他package的资源文件

最近在搞ROS和Gazebo (是不是最近搞的东西有点多?),一个需求是希望Gazebo的world文件能够通过相对路径的方式引用保存在其他ros package内的文件。经过一番google,最后的解决方案是在包含有资源的package的package.xml文件最后,通过<export>标签来增加Gazebo搜索model的路径,然后在world文件中使用形如<uri>model://<ros package>/<dir name>/mesh.dae&lt

2021-03-24 12:01:40 199

原创 Unreal Engine 4.25 Visual Studio Code intellisense error

最近在搞Unreal Engine。UE4.25 配合VSCode有个bug,就是生成的VSCode project文件的C++描述部分有误,导致VSCode的intellisense不能正常工作,表现为找不到如下文件UBT_COMPILED_PLATFORM/UBT_COMPILED_PLATFORMPlatformCompilerPreSetup.h并伴随着自动补全和语法高亮出现问题,也无法在输入函数参数时获得函数定义的提示,更无法鼠标悬停获得对象的定义描述。经过Google后发现,这个bug

2021-03-16 15:31:40 1208

原创 试图将CGAL 作为 Blender 插件:C++, pybind11, CMake, CLion, Eigen, NumPy

1 起因在一个参与的课题中,一直都是用C++基于CGAL编写一些处理网格(mesh)的代码。最近需要实现一个可视化,或者更进一步实现用户的简单交互。由于要同时兼顾对网格的编辑能力,我们一开始决定尝试将我们的代码变成一个Blender的插件(addon或plugin),这样既可以获得可视化的能力,又能利用Blender对网格进行其他编辑。我对Blender仅是听说过但没有真正使用过,经过两三天的尝试与折腾,目前感觉这个做成插件的想法是可行的。这里记录一下如何将基于CGAL的C++代码转换为Blender的插

2021-02-06 05:45:13 1428

原创 CppWeekly 09 regex ( string_view )

这个系列是从这篇博客开始的,主要是复现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。062 regex and string_viewJason 简单介绍了regex的用法,并且明确提示说std::sub_match的std()方法会创建一个std::string对象,对于短string,问题是不大的,但是对于长string,可能出现性能问题。于是在测试正常的regex用法之后,我试图配合regex和std::string_view一起使用。一开始是

2021-01-18 16:27:16 430

原创 CppWeekly 08 constexpr

这个系列是从这篇博客开始的,主要是复现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。041 constexprJason 在这期和后面几期讨论了constexpr的一些用法,非常有意思。把部分简单的运算从运行时移动到了编译时,可以提高运行效率。但是我还没有真正找到必须要这样做的的实际样例,主要是我写的代码,瓶颈都不在这种地方(瓶颈多了去了, 呵呵)。C++17 中constexpr可以使用std::array和lambda函数了。这里搬运Jason

2021-01-17 12:32:00 182

原创 CppWeekly 07 aggreate initialization, variable attributes

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。025 aggregate initialization必须要C++17或之后。基本思想是初始化派生类,但是行为和structured binding好像,就是当出现私有成员时,就不行了。使用类型不正确的初始值也是不行的,但是可以忽略定义次序上排在后面的公有成员变量。即使忽略私有成员,也无法初始化。class A {public: int a = 0;

2021-01-11 04:27:25 241 2

原创 CppWeekly 06 structured binding

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。024 Structured bindingsJason在这期里简单介绍了structured binding在C++17中的运用,挺有意思。其实我在想,要是structured binding可以忽略一些变量就好了,就像是Python里的下划线“_”的作用。目前可以通过std::tie和std::ignore来实现类似的功能,但是要预先定义变量。Structure

2021-01-11 03:50:46 394

原创 CppWeekly 05 nested namespace and std::clamp

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。022 Nested namespaces这个是C++17的新特性,可以创建嵌套的namespace时将他们连写在一起,有时候很方便。namespace orgnization { namespace component { namespace subclass { struct A { }

2021-01-10 06:07:17 445

原创 CppWeekly 04 if constexpr, if initialization

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。018 if constexprif constexpr可以帮助我们让函数的返回值的类型可变。在函数模板,type tratis和auto的通力合作下。见代码。其中TypeName.hpp请见于代码所在的Github repo。#include <iostream>#include <limits>#include <type_tr

2021-01-09 12:46:40 216

原创 CppWeekly 03 Lambda expression and std::function

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。015-016 Using lambda expression instead of std::bind在第15期,Jason首先介绍了std::bind的用途,之后在第16期,他推荐尽量不要使用std::bind,并且貌似std::bind和boost::bind不兼容。Jason推荐使用lambda函数实现类似于std::bind的功能。于此同时,我一直对std:

2021-01-06 15:56:50 122

原创 CppWeekly 02,Fabonacci, exchange

这个系列是从这篇博客开始的,主要是浮现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。013 Fabonacci这个例子挺有意思,首先展示了Fabonacci数列如果用普通的递归方式设计,函数的调用次数将会成级数增加。同时Fabonacci数列的数值增加是很快的,几十个以后数据的范围就超出了int类型能够表达的范围了。Fabonacci数列参考这里。#include <iostream>static int fib( int i )

2021-01-06 12:58:48 172

原创 CppWeekly 01, future, vairadic expansion, std::any

最近发现一个视频列表,名为“C++ Weekly With Jason Turner”。其中每个视频都不长,是一个大佬每周做一次在线教程,围绕C++的一些细节特性进行现场编程,空闲时间看看解解闷挺好的,还能学到不少技巧。我试着复现一些教程中用到的实例,打算看到哪做到哪吧。下文中和以后的文章中所有代码都将出现在我的这个repo。每个教程都会有一个文件夹,内有源文件和一个Build.sh脚本,该脚本用于简单地编译源文件。090 FutureJason在这次教程中使用的是随机数生成作为一个task对待,我嫌

2021-01-04 13:12:13 227

原创 C++活到老学到老 auto

起因2020年了,C++20似乎已经正式发布了,主流编译器应该都支持了吧。从C++11开始,每三年都会正式发布一版更新的标准,并伴随着各种新特性和标准库。变化太快有时候跟不上,是时候再回顾一下C++了,这东西活到老学到老啊。这篇博文是受这个mediu文章启发,自己测试并总结出来的。主要对auto关键字和相似的类型推断行为进行了探索。经过测试系统Ubuntu 20.04, g++ 9.3.0。定义变量时的类型推断相信自从C++11之后,大家都获得了这个利器,auto。我们可以写auto a =

2020-12-21 05:54:19 225 1

原创 最近使用的一些用于点云和面网格处理的 CGAL 功能

一篇前后零散写了20几天的博文,希望大家品评。主要是总结最近使用CGAL的一些心得,集中在点云和面网格(surface mesh)的处理。我同时提供了sample代码和数据(Google drive或百度云, 密码uo59)。包含的内容有PLY格式点云读写,处理PLY文件中的property。PLY格式面网格读写。面网格property map和面法向量。网格检查和修复。Advancing front surface reconstruction.Isotropic remeshing.面网

2020-11-01 01:08:37 1290 7

原创 kornia 之一 基础和 filter

目录起因经过常规import基本操作结果起因夏天时课题组一个小哥推荐了kornia这个库,传说是把一些典型的一些cv操作基于PyTorch设计成了differentiable的,辅助进行深度学习模型的训练。但是一直也没有仔细看过或者用过这个库,最近一个模型中需要用到一些常见的filter操作,于是想到了这个库,尝试了一下把所见所感写在这里作为记录。经过当前kornia的版本是0.4.0. kornia 也在不断更新中。其实PyTorch更新也挺勤的。。。常规import若没有另外描述,那么如下i

2020-10-23 13:45:03 4425 5

原创 ROS camera_calibration 源码阅读笔记

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

2020-09-16 02:49:20 836 7

原创 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 2166

原创 安装测试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 1736

原创 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 [email protected](nopython=True)def test_zeros(H, W): # array = np.zeros((H, W, 3), dtype=np

2020-06-01 05:49:42 4364

原创 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 1272 1

原创 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 332

原创 C++ Core Guideline 笔记03

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

2020-05-24 13:13:59 362

原创 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 418

原创 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 1565

原创 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 1817

转载 C++ book list

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

2020-03-22 02:59:44 472

原创 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 758

原创 PCL NormalEstimation 源码结构

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

2020-03-19 09:14:43 1225

原创 pytorch3d 上手测试

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

2020-03-15 06:39:48 5557 12

原创 Python3 multiprocessing joinable queue 模板

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

2020-03-02 07:15:38 746

原创 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 1304 2

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

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

2019-11-22 02:25:27 3251

原创 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 2918 7

原创 PyTorch dataloader 中的随机数

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

2019-10-31 01:12:28 3267

原创 OpenCV modules

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

2019-10-16 02:02:24 231

空空如也

空空如也

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

TA关注的人

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