
自动驾驶
FourierTransformer
这个作者很懒,什么都没留下…
展开
-
BEVFormer组件分析
而现在的refer points 是由 虚拟的grid points往图像上投影得到的. 在相机参数固定的情况下, 此时的refer points是固定的.另外, 显然这样虚拟的grid points 是不合理的, 因为有些地方可能就没有点, 但是还是能够投影到图像上的. 这里用真值的点应该会更好,问题: 给固定的这些refer points 的收益是多大?下面是 SpatialCrossAttention这个模块的forward函数的部分代码。根据上面的代码可以看出来,如果输入的是3d, 则是。原创 2023-06-04 19:09:29 · 1443 阅读 · 1 评论 -
SECOND: Sparsely Embedded Convolutional Detection
感知, 3d目标检测,原创 2022-06-21 08:53:27 · 538 阅读 · 1 评论 -
lio-sam算法整理<3>
上次有一些函数没有查细节,这次接着查看第一个函数就是 deskewPointthisPoint = deskewPoint(&thisPoint, laserCloudIn->points[i].time);这里面传入了当前的点以及时间戳.做的事情如下 PointType deskewPoint(PointType *point, double relTime) { if (deskewFlag == -1 || cloudInfo.imuAv原创 2021-09-27 22:54:23 · 442 阅读 · 0 评论 -
lio-sam算法整理<2>
msg/cloud_info.msgcloud_info.msg可以看到,这里面定夜猫子点云,imu的初始化,以及ringindex的相关msg.在对应的CMake里面也加入这个相当于是自定义的了,因此也需要有 msg_generation相关.在package.xml也要有对应的src/imageProjection.cpp这个代码开始定义了自定义的 结构体VelodynePointXYZIRT因为正常的pointcloud2里面没有这个类型的,因此这里进行了自定义. (后面原创 2021-09-27 20:51:02 · 899 阅读 · 0 评论 -
lio-sam算法整理<1>
配置环境https://github.com/TixiaoShan/LIO-SAM目前 使用的是ros1的,按照上面的github教程即可安装成功。运行lio-samsource devel/setup.zsh 之后,运行roslaunch lio_sam run.launch如果报错libmetis.so cannot open shared .....可以 sudo cp /usr/local/lib/libmetis.so /usr/lib/ 进行解决。如果报错cannot la原创 2021-09-27 16:05:54 · 479 阅读 · 0 评论 -
ros学习之topic实例5
接上次的实例4,这次就用类来实现,接收,处理,并重新发布先创建包 catkin_create_pkg pcl_process_class roscpp std_msgs在对应的src下面写入 pcl_process_class.cpp 代码如下>>#include <ros/ros.h>>>#include <pcl/point_types.h>>>#include <pcl_conversions/pcl_conversi原创 2021-09-27 11:20:08 · 98 阅读 · 0 评论 -
ros学习之topic实例4
之前都是发布点云,这次的示例是发布之后并处理一下,将点云的颜色改变之后再重新发布出云,实际在slam中使用时这种方式非常多,比如lio-sam里面就有.代码如下>>#include <pcl_conversions/pcl_conversions.h>>>#include <sensor_msgs/PointCloud2.h> >>ros::Subscriber subCloud; //用于接收点云>>ros::P原创 2021-09-27 11:06:22 · 181 阅读 · 0 评论 -
由点云生成bev的图像
从点云生成图像个人理解有很多种方式,可以虚拟相机的位置,然后就可以生成图像了,但是经常使用的可能就是看一下BEV的图,我这里写了一个简单的函数,用于从pcd点云文件生成bev的图def pcl2bev(pcl_path, ratio=10, width=80, height=120): """ pcl点云中的一般都是m的坐标, ratio: 1m代表几个像素的意思. 比如width5m ,height,10m的一个范围 """ im原创 2021-09-24 15:18:49 · 2368 阅读 · 3 评论 -
相机变换要注意的事项
往往在使用公开数据集的时候,会有多个传感器,比如kitti,和nuscenes都是有多个传感器的,每个传感器都有相对于某坐标系的pose信息,比如对于kitti,有T_cam_velo, T_imu_velo等.对于nuscenes,也有 lidar2ego, camera2ego等,在这些信息都有时候,在计算复合pose的时候,就要注意了.下面以 nuscenes为例,kitti的也是类似.假设我们拿到了, ego2w, lidar2ego以及 camfront2ego 的pose信息了,原创 2021-09-23 12:35:39 · 525 阅读 · 0 评论 -
ros学习之topic实例2
ros学习之topic实例2之前使用ros发布了自定义的一个简单的gps.msg.这次尝试发布并接收一下点云的信息创建工作packagecatkin_create_pkg pcl_pub roscpp std_msgs写代码 src/pcl_pub.cpp 内容如下#include <iostream>原创 2021-09-21 15:19:34 · 337 阅读 · 0 评论 -
根据激光雷达点云中点的坐标计算ring的值
目前velodyne系列的激光雷达已经会提供ring的值,所谓ring的值,就是每个点是几束光发出来的。参考这个图那如果没有提供的话,就需要自己来算 ring的值了.下面是一段参考代码. # read binary data scan = (np.fromfile(velo_filename, dtype=np.float32)).reshape(-1, 4) # get ring channel depth = np.linal原创 2021-09-20 19:25:12 · 4120 阅读 · 0 评论 -
c++读取自定义点云pcd文件
之前查读取pcd的文件,大多数是用python的open3d来进行读取,但是这样读取到的信息,好像只能够得到 pcd.points,和pcd.colors, 但是如果想要把pcd中的信息都拿到呢,比如我保存的时候,pcd中的点云的类型是下面这样的struct PointXYZIRPYT{ PCL_ADD_POINT4D PCL_ADD_INTENSITY; // preferred way of adding a XYZ+padding flo原创 2021-09-20 18:54:18 · 2698 阅读 · 2 评论 -
pykitti的使用
最近在用kitti的 kitti_raw的数据集,一直在和pykitti打交道, pykitti这个包里面整理了经常使用的一些接口.比如 pose,信息,比如把点云信息根据每个时刻的pose,就能够得到一个大的点云地图.而且比较稠密,因为用的是原始的.下面就以 点云拼接为例,来熟悉pykitti中的接口.创建kitti的数据集的对象import pykitti# dataset = pykitti.raw(basedir, date, drive, frames=list(range(0, 2原创 2021-09-20 18:37:38 · 1575 阅读 · 1 评论 -
深刻理解相机的pose
之前从未仔细想过到底相机的pose 意味着什么,或者准确地来说,两个物体之间的pose意味着什么,以及在实际计算的时候,该注意什么.从kitti数据集谈起看 kitti_raw的论文时会发现各种传感器的位置如图比如在用pykitii这个工具包时,会发现在raw.py 里面关于坐标变换是这么算的.以3号相机为例.假设我要得到从 velo到cam3的 pose信息.代码里面经过了这样操作 T_cam0unrect_velo = self._load_calib_rigid(velo_to_cam_原创 2021-09-16 13:15:52 · 1840 阅读 · 0 评论 -
opendrive格式完全解析
opendrive格式完全解析在carla仿真环境中提供了很多的示例的xodr文件,如图所示在目录: carla-0.9.12/CarlaUE4/Content/Carla/Maps/OpenDrive下面有如下的xodr文件OpenDriveMap.xodr Town01.xodr Town02.xodr Town03.xodr Town04.xodr Town05.xodr Town06.xodr Town07.xodr原创 2021-09-15 16:00:33 · 4409 阅读 · 0 评论 -
No module named derived_object_msgs.msg
环境 :ubuntu18.04ros-melodiccarla-0.9.12在安装 ros1 bridge时遇到的bug.解决办法sudo apt-get install ros-melodic-astuff-sensor-msgs刚开始在网上查,说的都是用sudo apt-get install ros-kinetic-derived-object-sensor-msgs或者sudo apt-get install ros-melodic-derived-object-sens原创 2021-09-10 23:03:14 · 1739 阅读 · 1 评论 -
Eigen/core no such file or directory的解决办法
环境: ubuntu18.04报错如下fatal error: Eigen/Core: No such file or directorycompilation terminated.要先检查 eigen库是否安装sudo updatedb如果出现updatedb command not found请先安装sudo apt install mlocate再运行locate eigen3如果出现了eigen库的文件,要检测CMakeLists里面是否有include_directo原创 2021-09-08 22:54:49 · 2579 阅读 · 0 评论 -
ubuntu18.04安装ros2
这里安装的是 ros-eloquent ,对于其他的版本还未尝试sudo apt update && sudo apt install curl gnupg2 lsb-releasecurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -sudo sh -c 'echo "deb [arch=amd64] http://packages.ros.org/ros2原创 2021-09-06 21:30:18 · 288 阅读 · 0 评论 -
ROS学习2
文件系统Catkin 编译系统简单地说 Catkin是ROS基于Cmake进行的扩展.Catkin有何特点沿用了包管理 find_package() , pkg-config扩展了 CMakepackage.xml : 这里面包括了 package 的描述信息.CMakeLists.txt工作原理使用catkin_make的流程之前我们创建了 catkin的工作空间,那么现在src,build,devel下面分别放着的是什么.我们开发的话,主要是在src这个源代码包原创 2021-09-04 18:09:41 · 411 阅读 · 0 评论 -
ROS学习1
1.安装ros我这里使用的是ros melodic这个版本,具体安装可以参考其它教程管理环境printenv | grep ROS得到ROS_DISTRO=melodicROS_ETC_DIR=/opt/ros/melodic/etc/rosROS_PACKAGE_PATH=/opt/ros/melodic/shareROS_PYTHON_VERSION=2ROS_VERSION=1ROS_ROOT=/opt/ros/melodic/share/rosROS_MASTER_URI=原创 2021-09-04 17:31:50 · 282 阅读 · 0 评论