编程 [39]
“我还要学CUDA编程!”(二)——CUDA编程模型
CUDA编程结构 在GPU上执行的函数称为CUDA核函数(Kernel Function),核函数会被GPU上多个线程执行。典型的CUDA程序遵循如下模式: 把数据从CPU内存(HOST)拷贝至GPU内存(DEVICE) 调用该Kernel函数,对DEVICE中的数据进行操作 将数据从DEVICE传
”我要学CUDA编程!“ —— 来自一个废物的自白
写在前面(废话,请跳过) 本来自己的脑子里是不存在CUDA编程这个东西的,没错,就是压根儿没听说过。 之所以了解到这个东西,是因为最近开始做AVM (Around View Monitor),或者说SVS (Surrounding View System),利用4个广角相机,实现车辆周围的360°环
车道线的多项式曲线拟合
离散点平滑 基于优化的离散点平滑 模型检测到的车道线,最终的输出的是车道线的点坐标(x,y),这些点能够大概描述车道线在画面中的位置,但是如果想要拟合出车道线的高阶方程,可能还是不够平滑,一些离散点会影响拟合的效果。 优化变量:车道线点坐标(x_i,y_i) 优化目标有三个,分别是平滑度、长度和相对
点云数据处理踩坑进行时
读取 .bag文件报错 [FATAL] [1702017430.130428395]: Required op field missing 报错如下: $ rosbag play tsari.bag
[ INFO] [1702017430.118011688]: Opening tsari.bag
使用OpenCV的VideoCapture的实例化vector读取多个相机
写在前面 现在车上有7个相机,如果想要用OpenCV同时读取这些相机的画面的话,实例化7个 VideoCapture是没有问题的,虽然会涉及到多线程的问题,但是多线程我还不会(ciao,是反废话)。直接实例化多个 VideoCapture未免有些显得技术力过低,因此使用 vector容器来存放读取的
mmyolo目标检测之边用边学(笨鸟快飞边学边更版)
写在前面 为什么不直接输出一堆内容,主要是因为自己太菜了,上学时的那些深度学习知识,已经差不多都还给老师了,而且工程应用又是另一码事。所以我就一边用mmyolo框架训模型,一边从头学起。。。 快成炼丹师了,不过对如何调整hyperparameters一点头绪都没。以下提到的功能的使用,都可以在mmy
YOLOv8的训练和C++部署
写在前面 YOLOv8 是 Ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持目标检测,目标分割,物体分类和姿态估计。 很多YOLO介绍blog会附上下面的结构图,虽然99%的人不会去看,而且我也是那99%的其中一员,不过为显专业(啊这该
OpenCV后续的踩坑实录和解决办法
GLIBCXX3.4.9 not found 解决方案 我是因为python的opencv的问题,可以尝试安装python版的opencv pip install opencv-python
但是如果上面的方法解决不了这个问题, sudo apt-get install libstdc++6
A
单目视觉的3D目标方向估计 - Orientation Estimation of 3D Object in Monocular
方向的概念 单目相机的3D目标检测是在2D目标检测的基础上绘制出3D BBox任务,目标方向的估计是其中重要一环。 在单目相机3D视觉检测中,要理解一个重要概念:即Egocentric 自我中心和Allocentric 客体中心间的区别。这两个概念来自空间认知领域,Egocentric Frame
单目相机的3D目标检测 - 3D Object Detection using Monocular
写在前面 即便是完全依靠着CNN检测出的2D bbox可以估计目标的深度,但是后续的预测,规划和运动控制,都需要物体的3D信息。更何况,如果能恢复目标的3D信息,对测距精度的提高也有很大的帮助。 激光雷达和深度相机固然精度很高,但是贵。而且在Lidar和Depth Cam的基础上加入RGB单目相机可
单目相机的测距 - The Distance Estimation of Monocular Camera
写在前面 单目相机测距是怎么回事呢?单目相机相信大家都很熟悉,但是测距是怎么回事呢?下面就让小编带大家一起了解吧。 单目相机测距,其实就是测距了。那么单目相机为什么会测距,相信大家都很好奇是怎么回事。大家可能会感到很惊讶,单目相机怎么会测距呢?但事实就是这样,小编也感到非常惊讶。那么这就是关于单目相
CMakeList.txt 学习笔记
编译程序的时候,在链接库 ADD_LIBRARIES 踩到了大坑。 所以决定重新认真的好好学一下CMakeLists怎么编写。 编写 CMakeLists.txt最常用的功能就是调用其他的.h头文件和.so/.a库文件,将.cpp/.c/.cc文件编译成可执行文件或者新的库文件。 每日一问:领导给买
ROS入门 - 如何订阅数组型消息
每日一问:我学PCL了吗?领导给批显卡了吗? :没有 为什么要订阅数组型消息 比如在这个场景下:YOLO在场景中检测到多个目标,并通过其他算法得到了目标的ID,class,位置,速度等信息。这些信息会作为避障或局部路径规划的依据。一台自动驾驶汽车或机器人上的其他算法模块也可能需要这些信息,这种时候会
ROS入门 - 如何新建功能包 & 如何将现有程序作为功能包加入ROS
写在前面:Ubuntu20.04 对应ROS版本为 Noetic。 每日一问:亲爱的领导什么时候才能让我用PCL和ROS2 并给我配一张显卡捏? 新建ROS工作空间和功能包 创建新的工作空间 # home目录递归创建工作空间,也可以是任何你想创建ws的地方
mkdir -p ~/catkin_ws/
C++函数的参数列表中 & 和 * 的使用
主要区别是函数中形参的三种传递方式,值传递、指针传递和引用传递。
C++实现每隔一段时间,向txt文件中写入数据
使用C++实现每隔一段时间,向一个txt文件中写入一些数据
libstdc++.so.6: version `GLIBCXX_3.4.30' not found 的几个解决思路
写在前面 目前在学习Paddle。在conda环境中使用 pip安装好支持CUDA12.0的Paddle后,import paddle时出现 libstdc++.so.6: version `GLIBCXX_3.4.30' not found这个问题。 根据网上的资料,Paddle编译是使用 gcc
Python笔记(已经断更)
一些Python的知识点 啥是面向对象(OOP) 面向对象三要素封装、继承、多态 封装: 确标识出允许外部使用的所有成员函数和数据项,或者叫接口。有了封装,就可以区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者。 继承: 继承有两种含义:其一是继承基类的方法,并做出自己的改变和/或扩展—
MATLAB对点云数据(.ply)的处理
前言 有人会好奇,同样是点云,.pcd和 .ply 的处理能有啥大区别吗? 其实是有的,.pcd 文件的数据,是基于点的,也就是里面存储的内容全部都是和点相关的信息。 而 .ply 增加了关于面的信息,也就是有了 mesh。在介绍使用 MeshLab 进行点云表面重建的那篇文章中,已经提到过这点。几