关于相机与激光雷达数据采集与标定

2023-11-15

最近在做一个关于车路协同的项目,需要做一个路侧系统,传感器有摄像头和激光雷达。相机和激光雷达联合标定费了老半天劲。在此记录一下。

  1. 雷达时间戳不对,导致摄像头和雷达的数据无法对齐。‘’

解决办法:修改雷达驱动发布点云消息时的时间戳

  1. 相机内参标定可以使用MATLAB,ROS的camera_calibration包。但是使用MATLAB的工具包时只能计算出来相机内参和相机畸变参数,相机投影矩阵只能自己计算(投影矩阵和相机内参的区别也就在于投影矩阵融入了畸变参数)。python代码如下:
import cv2
import numpy as np

intrinsicmtx = np.array([[3282.04407377046,	0,	1285.36005742231],
[0,	3304.32265017942, 1048.50567777262],
[0, 0,	1]])
dist=np.array([-0.550994259036344,	0.480339307652613, 0, 0])
projectmtx,roi=cv2.getOptimalNewCameraMatrix(intrinsicmtx ,dist,(2560 ,1440),0)
print(projectmtx)

而使用ROS包则可以直接给出投影矩阵,缺点就是需要棋盘格在图片上的x、y、skew(旋转)、size(大小)的变化需要满足他的要求才可以进行标定,所以最好直接连着相机进行标定,录rosbag可能会不满足他的条件。

  1. ROS2订阅保存图片python代码
import rclpy
from rclpy.node import Node

from std_msgs.msg import String

import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError
path='/home/wangbin/calib/img/' #存放图片的位置

class ImageSubscriber(Node):

    def __init__(self):
        super().__init__('minimal_subscriber')
        self.bridge = CvBridge()
        self.subscription = self.create_subscription(
            Image,
            '/hk_opencv_example/image_raw',
            self.listener_callback,
            10)
        self.subscription  # prevent unused variable warning

    def listener_callback(self, msg):
        try:
            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
        except CvBridgeError as e:
            print(e)
        timestr = '%.6f' %  (float(msg.header.stamp.sec) + 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于相机与激光雷达数据采集与标定 的相关文章

随机推荐

  • 51单片机蓝桥杯学习记录2独立按键

    51单片机蓝桥杯学习记录 独立按键这一块是比较简单的 就是读一下io口的高低电平 用普通函数写和用中断写还是有些不一样的 要注意的还是消抖和重复触发的问题 不说了 上码 author 风行天 time 2020 01 16 include
  • 初识云计算————虚拟化背景

    VM 虚拟机 Virtual Machine 虚拟化背景 美国环境保护署 EPA 报告的一组有趣的统计数据就证明了其好处 EPA 研究服务器和数据中心的能源效率时发现 实际上服务器只有 5 的时间是在工作的 在其他时间 服务器都处于 休眠
  • 字节和比特简单介绍

    字节 byte 字节为Byte 多数用B表示 字节为计算机中数据处理的基本单位 比特 bit 又称位 表示二进制位 为计算内部数据存储的最小单位 关系 1Byte 8bit 其他单位 1B Byte 字节 8bit 1KB Kilobyte
  • redis的数据类型string和list

    学习笔记记录 方便以后查看 一 Redis简介 1 关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库 最终会将数据持久化到磁盘上 而nosql数据 库是基于特殊的结构 并将数据存储到内存的数据库 从性能上而言 nosql
  • 文献精讲-弱小目标检测-ADMD方法

    分享一下个人对于近期读过的一篇文献 Fast and robust small infrared target detection using absolute directional mean difference algorithm 的
  • Python打包的艺术(二)- Packaging Tools的昨天,今天,明天

    本文转载至 http blog chinaunix net uid 15174104 id 4036539 html 截至今年3月 Python的打包工具链处于的状态可以用 非常混乱 来形容 除了官方的distutils 第三方有setup
  • Python 包发布

    包结构 准备工作 twine 安装 pip3 install twine pypi 账号注册 https pypi org account register 注册成功后 记得到邮箱激活 否则无法使用 三个文件 setup py import
  • 【华为OD机试真题】MVP争夺战(python)100%通过率 超详细代码注释 代码解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 MVP争夺战 知识点DFS搜索 时间限制 1s 空间限制 256MB 限定语言 不限 题目描
  • 【Java数据结构】Map和Set的使用

    章节目标 掌握Map Set及实际实现类 HashMap TreeMap HashSet TreeSet的使用 掌握 TreeMap 和 TreeSet 背后的数据结构搜索树的原理和简单实现 掌握 HashMap 和 HashSet 背后的
  • Ant Desgin Pro v6 正式版本企业级从零开始实现动态菜单与权限视频教程(28 个视频)

    Ant Desgin Pro v6 正式版本企业级从零开始实现动态菜单与权限视频教程 28 个视频 欢迎加入我们的Ant Design Pro v6视频教程 如果您正在寻找一门教您如何从零开始构建企业级动态菜单和权限管理的课程 那么这个视频
  • spring boot学习(十二)整合Druid

    Druid简介 Java程序很大一部分要操作数据库 为了提高性能操作数据库的时候 又不得不使用数据库连接池 Druid 是阿里巴巴开源平台上一个数据库连接池实现 结合了 C3P0 DBCP 等 DB 池的优点 同时加入了日志监控 Druid
  • linux上zookeeper单机搭建伪集群

    Zookeeper 一 下载zookeeper 解压到指定文件夹下 tar zxvf apache zookeeper 3 5 8 bin tar gz C home zk 改个名字 这个随意 mv apache zookeeper 3 5
  • OpenCV单目标跟踪:实现目标追踪的简易指南

    OpenCV单目标跟踪 实现目标追踪的简易指南 了解如何使用OpenCV库实现单目标跟踪 本指南介绍了OpenCV中主要的目标跟踪算法 包括CSRT KCF MIL GOTURN和DaSiamRPN 通过选择初始目标区域并使用适当的跟踪器
  • (2019.5.29)关于drawable你可能不知道的一些事

    转载公司内部论坛本人文章2019 5 29 导读 Android项目中 官方建议将不同分辨率的资源图片分别放在drawable mdpi drawable hdpi drawable xhdpi等不同的drawable文件夹下 以便不同分辨
  • 解决java.sql.SQLException: com.mysql.cj.jdbc.Driver报错

    当有 com alibaba druid support logging JakartaCommonsLoggingImpl error 严重 create connection error url java sql SQLExceptio
  • js 限制输入框不能为空_javascript如何验证不能为空?

    JavaScript中可以使用replace g 方法验证是否为空 replace g 可以将文本框开始与结尾的空格去除 然后使用 号判断是否为空 使用正则方法验证不能为空 正则表达式 replace g 整体为如果以一个或多个空格开始 替
  • VMwareWorkstationPro16的下载与安装,以及vm账号注册的问题

    VMwareWorkstationPro16的下载与安装 以及vm账号注册的问题 查看虚拟化支持是否开启 vm的安装 vm账号注册的常见问题 VM 16的安装步骤 查看虚拟化支持是否开启 可以从任务管理器中的性能去查看CPU是否开启虚拟化支
  • UNIX环境编程——信号量与互斥量对比

    本期主题 信号量与互斥量的对比 发现CSDN一篇文章的大小有限 所以新开了一篇讲这一部分 前面的内容在 UNIX环境编程 线程详解 往期地址 UNIX环境编程 文件IO UNIX环境编程 标准IO UNIX环境编程 进程环境与进程控制 文章
  • ubuntu RPM should not be used directly install RPM packages, use Alien instead!

    ubuntu RPM should not be used directly install RPM packages use Alien instead 所以我们最好下载deb版本的安装包 安装 参考文章
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使