- 博客(26)
- 收藏
- 关注
原创 Carla学习(九)世界坐标和相机坐标变换——过滤视野内目标
出于两种原因,有时候需要知道哪些车辆或行人在相机的视野范围内/不在视野范围内利用Carla制作数据集时,不管是3D物体目标检测还是2D物体目标检测,我们都需要图片训练集。例如相机图片和图片内车辆或行人的ground truth(2d bbox, 3d bbox)。可视化呈现。例如在V2V通信场景下,车辆之间是有通信的,那么可以将这种通信关系在相机图片上绘制出来,表达更直观。上述两个例子我们都需要知道目标物体(车、人)是否在相机的视野范围内,例如生成车辆的3d bbox,只有在视野范围内的车辆才生成
2021-02-04 09:23:21 5608 8
原创 ubuntu下vscode编写C++环境配置,包括launch.json、tasks.json和c_cpp_properties.json文件说明
主要补了一下C++编译连接的知识,顺带着学习了一下VS code编写C++的环境配置问题,详细学习了几个json文件的作用
2021-02-01 23:01:13 5873
原创 Leetcode #39 #40 回溯法
#39给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。#40给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所
2021-01-30 11:04:08 193
原创 Leetcode #33 #34 二分法
#33升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1.#34给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。二分法在有序数组中查找某值,我们可以利用二分法,时间复杂度为O
2021-01-30 09:35:32 161
原创 C++ 头文件和源文件include问题:“error LNK1169:找到一个或多个多重定义的符号”
今天做C++练习时遇到一个问题,首先定义了三个文件:ex15_2.h、ex15_2.cpp和main.cpp,其中ex15_2.h头文件,ex15_2.cpp是ex15_2.h的实现文件,main.cpp是测试文件。三者包含关系为://ex15_2.h...std::ostream& operator<<(std::ostream& os, const Query& query) { return os << query.rep();}.../
2021-01-25 16:54:16 353
原创 平面坐标系旋转和平移
在Carla中可以用车辆传感器代替路侧传感器,由于传感器是依附在车辆上的,因此需要将作为传感器的宿主车辆隐藏起来。这个过程提前知道车辆的世界坐标和传感器的世界坐标。由于API要求传感器依附在车辆上,需要获得传感器相对于车辆坐标系的坐标,实际上等价于二维平面上点相对于原点进行平移和旋转后的新坐标。参考https://blog.csdn.net/qq_37682160/article/details/105609001的内容如下:设传感器世界坐标为P1,车辆世界坐标为P2,以P2为原点,则传感器在
2021-01-20 11:42:31 2684
原创 Carla学习(八)利用carla制作自己的kitti数据集
利用carla制作kitti 3D目标检测数据集基本上就是获得图片、雷达、2D和3D box。这里主要需要解决的问题就是carla世界的坐标系和kitti数据集的坐标系不太一样,kitti坐标系如下所示:具体的坐标转换我参考了@Fredrik00 https://github.com/Ozzyz/carla-data-export,这项工作在carla0.8.4环境下制作kitti数据。因为新版本的carla API变化很大,因此在此基础上我修改了原来的API和一些细节问题,现在可以用在Carla
2020-12-07 10:45:06 6633 51
原创 Carla学习(七)收集同步的传感器数据
为了收集同一时刻的图像雷达数据,利用到了两个点:同步模式和固定时间步这块挺疑惑的,到底是客户端的world.tick()驱动服务器更新step,还是服务器按照固定的时间步更新step,后面写了自己的猜测,不知道对不对。。。不过最后收集到的传感器数据是同步的time-steptime-step是服务器更新两个step之间的时间间隔,分为两种:variable time-step:取决于计算机计算的时间,通常很短fixed time-step:将两个step之间的时间间隔固定为一个常数值,那么每个
2020-11-18 11:15:09 3065 7
原创 Carla学习(六) 创建一个带有各种传感器的车辆
1 在catkin_ws工作空间中,创建一个程序包,这里命名sensor_vehicle。这里程序包不需要依赖,因为之后直接拷贝官网给的创建车辆的程序包。~$ cd catkin_ws/src/ros-bridge && catkin_create_pkg sensor_vehicle2 现在把官方给的程序包carla_ego_vehicle中所有的内容都拷贝到刚刚创建好的程序包sensor_vehicle中。这个官方程序包结构为:carla_ego_vehicle——config
2020-10-14 17:36:02 2652 3
原创 Carla学习(五) Carla常用传感器
Depth camera,输出carla.Image,深度相机使用三通道RGB值存储距离信息,然后将其转换为距离灰度图:normalized = (R + G * 256 + B * 256 * 256) / (256 * 256 * 256 - 1)in_meters = 1000 * normalized传感器数据包含:frame:第几帧timestamp:仿真时间transform:世界坐标width:图像宽度height:图形高度fov:相机的水平角度raw_data:BGR
2020-10-14 09:18:10 5348 1
原创 Carla学习 (四)ros-bridge创建自己的小车
想要创建一个带有传感器的小车,并且可以作为ros结点发布传感器数据的话,是不用自己写文件的。对于我这个刚刚接触ros的菜鸟来说,自己写ros和carla通信的结点根本就是天方夜谭,还好官方提供的ros-bridge的组中写好了很多ros package。其中carla_ros_bridge_with_example_ego_vehicle.launch定义个一个手动控制的车辆,包含三个结点,其中有发布传感器数据的结点,还有创建小车的结点,以及手动控制的结点。此次我就是将产生车辆的结点carla_ego_
2020-10-07 21:41:49 2430
原创 论文阅读:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
论文名称:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation主要内容:本文利用点云的无序性和旋转不变性,提出了一个深度网络,直接将点云的(x,y,z)坐标作为输入,根据网络结构的不同可以完成分类、目标部分分割和场景分割任务。解决的问题:神经网络通常处理的数据都是有规范格式的,例如图片,文本信息。然而点云作为一种不规范的、无序数据,通常转化为以下几种形式再输入网络:1 栅格(体素)转化为规范形状的
2020-10-07 21:23:12 496
原创 论文阅读:A Slope-robust Cascaded Ground Segmentation in 3D Point Cloud for Autonomous Vehicles
论文名称:A Slope-robust Cascaded Ground Segmentation in 3D Point Cloud for Autonomous Vehicles主要内容:本文提出了一种从3D点云中将地面点和非地面点分开的方法,并且对于斜坡型地面点有很高的识别率。方法主要分为两个步骤,受限利用激光雷达的物理特征(高度、角度)计算环间距,根据点实际间距与计算间距的比较初步去除部分非地面点。然后利用多区域RANSAC平面拟合方法进一步将地面点和非地面点区分开。解决的问题:很多地面点
2020-10-07 20:44:53 864
原创 Carla学习(三)安装carla0.9.10和ros-bridge踩坑
由于之前装的Carla0.9.4不再支持ros了,干脆把ubuntu系统重新装了一次,再次基础上成功安装carla0.9.10和ros-bridage。记录安装过程踩的坑~(注意:全过程基于科学上网)一、ubuntu的/home一定要分配150G,官方要求30/50G,实际上一开始分配了100G都不够,因此ubuntu18.04装了两次二、按照官方流程来就行了,中间不能出现报错,否则后面各种莫名其妙的错误,比如依赖不全。。。还是科学上网吧,否则国内无法下载,注意用python2.7编译ros-bridg
2020-10-04 22:13:39 2310 2
原创 Carla学习(二)简单传感器数据读取
给小车安装了三个传感器,碰撞传感器、RGB相机和Lidar。传感器也属于Actor类,在生成传感器时需要传入transform参数。对于相机和雷达来说,他们都是attach_to小车,所以传入的是相对于小车的相对坐标。碰撞传感器的transform直接使用默认值就可以。 # 设置RGN相机相对依附对象位置 transform_RGB = carla.Transform(carla.Location(x=0.8, z=1.7)) # 设置Lidar的transform tr
2020-09-26 21:16:36 4026
原创 C++两个类互相调用彼此的方法
今天在学习c++primer 第七章的时候,做练习题出现了个问题,如下:X.h文件代码:#pragma once#include"Y.h"class X{public:private: Y* y = nullptr;};Y.h文件代码:#pragma once#include"X.h"class Y{public:private: X x;};main函数:#include"X.h"#include"Y.h"int main() { X x;
2020-09-26 09:36:44 1905
原创 Carla学习(一) 小车简单直线行走
看官方的文档加晚上的一些博主的教程,动手写了一个小车直线跑动的例子。官方最新的文档比较全面,但是东西太多了,本垃圾不知道从哪里学起,慢慢来吧。。。。导入Carla包在编写自己的客户端时,我们首先需要导入Carla包,利用下面这段固定的代码:try: sys.path.append(glob.glob('../dist/carla-*%d.%d-%s.egg' % ( sys.version_info.major, sys.version_info.minor,
2020-09-24 20:43:20 3968
原创 Carla内容简介
最近学长安排了新的任务,开始学习Carla仿真软件。这个软件之前在自己电脑安装一次,各种坑,坑到我怀疑人生,大概装了两三天才装上,之后因为毕设就没动过了,时隔小一年又重新开始学。。。(后续有时间打算重新装一边最新版本的Carla,感觉之前装的有很多问题,虽然可以运行)毕竟自己英语不好,本科也不是计算机专业的,学起来还是比较困难的,在这里记录一下学习过程,避免忘了hhh核心概念基础1 world和client客户端:请求信息或者更改仿真的模块,一个客户端在一个IP和特定的端口下运行。通过终端和服务器
2020-09-24 20:39:08 2046
转载 关于C++在while(cin>>i)中输入^Z时输入循序对执行结果的影响
转载自https://www.cnblogs.com/chencong/archive/2011/11/03/2234880.html原文如下:在C++ Primer中,作者经常使用while(cin>>word)类似的语法,但是如何结束,可能会出现疑惑。有的时候需要两次快捷键才能结束循环,有的时候却只需要一次循环。在 Unix 系统中的实际的现象为:当输入为“字符串,回车,Ctrl+D”的时候,跳出循环;当输入为“字符串,Ctrl+D,回车”的时候,不会跳出循环;当输入为“字符串
2020-09-17 17:41:07 1473
原创 David silver强化学习课程第七课 策略梯度
第七课 策略梯度快开学了比较懒,这两天督促一下自己把后面的笔记都整理一下。。。强化学习方法分为两种:基于策略的方法和基于价值的方法。前面课程中提到的方法都是基于价值的方法,包括策略迭代、值迭代和值函数近似。基于价值的方法是根据价值函数来制定策略,这是一种间接优化策略的方式。那么我们可不可以直接得到策略?类似于值函数近似,我们用参数拟合策略,直接得到策略,这就是本课要讲的基于策略的方法—策略梯度。本节先引入了策略的直接表示形式,接着描述了最优策略的目标方程,最后提出三种梯度上升方法优化策略参数,得到最优
2020-09-07 16:07:43 587
原创 David silver强化学习课程第六课 值函数近似
第六课 值函数近似一开始看这节课内容的时候,还是有些乱的。不像前五章每一章的联系都很紧密,本章内容较分散,概念性的东西变少了,更多的引入了几种不同的算法,可以直接从算法上理解本课的内容—值函数近似。对于预测问题,我们可以参数化的表示状态值函数;对于预测问题,可以参数化的表示状态-动作值函数。本章讲了值函数近似的两种方法:增量方法和批方法,这两种方法主要在数据的使用上有所不同,但是都是基于随机梯度下降法。本章最后还引入了线性值函数近似的直接求解方法。上述方法在MC/TD(0)/TD(λ)下均有不同实现方
2020-08-26 16:53:07 862
原创 David silver强化学习课程第五课 模型无关的控制
第五课 模型无关的控制回顾上节课,主要讲了Model-free情况下如何解决预测问题,通过求解某一策略下的值函数评价该策略,主要有蒙特卡洛(MC)和时间差分(TD)两种方法。本节课主要讲Model-free情况下的控制问题,也就是如何找到一个最优策略,同样的利用到了蒙特卡洛和时间差分两种方法。本节集中解决Model-free的控制问题,由于缺乏环境信息,因此这是学习(Learning)过程而不是规划(Planning)过程,根据学习过程中代理是否利用自身经验改善策略,可以将强化学习分为两类:**同策略
2020-08-22 18:55:34 354
原创 David silver强化学习课程第四课 模型无关的预测
第四课 模型无关的预测在上一节课中,主要讲了利用动态规划的方法求解MDP的预测和控制两个问题,本质上它是model-based的,需要知道模型的信息如状态转移矩阵和回报函数。但是通常遇到的强化学习问题是不知道环境全部信息的,但是具有MDP的形式,在缺乏状态转移矩阵和回报函数的情况下如何求解预测和控制问题?本章主要讲了三种方法用来求解模型无关(model-free)的预测问题:蒙特卡洛方法(MC),时间差分方法(TD)和介于这两者之间的TD(λ)方法。这三种方法需要智能体和环境进行交互,获取相关的信息,在
2020-08-22 18:04:59 433
原创 David silver强化学习课程第三课 动态规划
第三课 动态规划本章主要讲了利用动态规划解决MDP的预测和控制两个问题。策略评估用来解决预测问题,策略迭代和值迭代用来解决控制问题,这都是建立在已知完整信息的MDP问题当中。1 动态规划简介动态:指的是该问题的时间序贯部分规划:指的是去优化一个策略那么哪些问题可以用动态规划求解呢?需要满足两个特性:最优子结构:求解问题可以分解为求解若干个子问题,子问题最优解构成了问题的最优解重叠子问题:子问题重复出现多次,可以缓存并重用子问题的解MDP恰好满足以上两个特性,贝尔曼方程给出了问题的迭代子问
2020-08-22 17:54:45 396
原创 David silver强化学习课程第二课 马尔科夫决策过程
第二课 马尔科夫决策过程本章主要讲解马尔科夫决策过程的基础知识,课程组提到几乎所有的强化学习问题都可以表示为马尔科夫决策过程。这里注意本章讲解的马尔科夫决策过程的环境是完全可观测的,一般强化学习问题的环境是部分可观测,所以也存在部分可观测的马尔科夫决策过程。1 马尔科夫性当前的状态可以充分地表示未来信息(由当前状态就可以知道下一刻的状态转移概率和奖励),则称该状态满足马尔可夫性。在上一节课中提到,已知马尔科夫状态,就可以取代历史信息Ht。由定义可以看到下一状态只和当前状态有关,和之前的状态无关。(
2020-08-22 17:45:36 525
原创 David silver强化学习课程第一课 强化学习简介
David silver强化学习课程第一课 强化学习简介本章主要介绍了强化学习涉及到的一些基础概念,包括强化学习解决的是哪类问题,涉及哪些要素以及解决强化学习问题的思路。1 强化学习的特征是什么使得强化学习不同于其他机器学习范式呢?不存在监督,只有奖励作为指导信号奖励是延迟的,比如游戏结束时反馈一个正/负信号(也存在实时奖励吧,比如迷宫游戏为了寻找最短路径,每走一步奖励设置为-1)事件涉及时间序列,它们之间是有关联的,不是独立同分布的代理的动作会影响后续序列化数据2 奖励奖励Rt是
2020-08-21 16:25:19 506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人