- 博客(74)
- 资源 (2)
- 收藏
- 关注
原创 Matlab激光雷达相机联合标定经验分享
联合标定是做多传感器融合的基础工作,也是一个没有最好只有更好的研究方向,相关论文也是层出不穷,网上也有许多开源的工作,包括Autoware的工具箱我也试过,感觉标定效果不是特别好,标定效果不稳定,有时候好,有时候不好(也可能当时经验有限,好多点没注意),后来Matlab2020b推出了激光雷达和相机的联合标定教程,简单试了一下,效果不错,2020b中有个bug, 2021a中已经修复了,并且把demo做成了像相机标定一样的工具箱,后来多次标定也总结了一些标定过程中的经验,简单分享一下.
2022-10-21 20:36:32
6346
18
原创 apollo7.0------浅谈激光雷达运动补偿(二)--计算解析
本篇博客主要解释一下上篇博客中运动补偿的计算部分,简单来说就是一个利用四元数球面线性插值(Slerp)计算每个点的位姿,然后根据坐标变换关系将该位姿下的坐标变换到需要补偿到的某个时间点下坐标.
2022-10-12 23:42:05
1940
2
原创 c++编译器配置错误问题clang: error: linker command failed with exit code 1 (use -v to see invocation)
注意cmake使用中c++编译器选择问题:gcc编译器没有-stdlib 这样命令行选项,LLVM clang编译器支持。 这是因为clang为您提供链接LLVM标准C ++库( libc ++ )或GNU标准C ++库( libstdc ++ ),而gcc只支持 libstdc ++ 。
2022-10-10 20:45:00
5029
原创 Xavier 下GMSL相机ROS驱动发布CompressedImage消息(基于NVJPG硬件编码)
在Xavier接入多个gmsl相机,采用yuv转rgb,再通过cv_bridge转成ros消息发出来的方式太耗费cpu,同时运行多路相机驱动会造成系统卡顿. Xavier上支持硬件的编解码,使用jtop可以看到硬件资源如下图,之前采用cpu将yuv转rgb后,还需要将采用image_transport(https://wiki.ros.org/image_transport)数据发布出来,在发布原始话题(sensor_msgs/Image)的时候,同时发布压缩图像(sensor_msgs/Compresse
2022-09-30 13:52:02
3700
7
原创 ros advertise 发布数据小技巧--latch配置
在ros发布数据的advertise函数形参最后一个为"latch",默认为false. 一般接收节点要在发布节点启动后才能接收到数据,但启动顺序有时无法控制,就会导致某些数据丢失,尤其像地图这种只发布一次的. 当发布数据端设置了latch = true,后起节点也可以接收到之前的最后一帧消息.另外一个特别有用的就是发布rviz可视化数据调试程序时,根据namesapce分析某些结果时,可以重复勾选显示某些条目,只需在rviz中重新勾选一下这个Display就可以, 不需要重新播放数据....
2022-06-21 13:23:12
1913
1
原创 apollo7.0------浅谈激光雷达运动补偿(一)
简介:激光雷达帧率一般为10hz, 也就是100ms一帧,在车辆高速行驶或者转弯时,一帧点云中的点并不是同一个坐标系下获得的测量结果,对于同一个目标在三维点云中就会出现畸变,这时要想获得精确的测量,就需要对点云做运动补偿,或者说即便校正,将同一帧点云中所有点统一到某一个时间点下的坐标系中。如果做低速移动平台,可能对即便矫正的需求没有那么高,毕竟效果不明显,还额外增加了耗时,但是对于高速运动的车辆,激光雷达的运动畸变对于感知和定位都有着非常大的影响,是非常基础的一个环节。简单举几个例子:
2022-05-23 01:09:37
5262
5
原创 apollo7.0 初探------激光雷达感知测试
之前一直有看过apollo的程序,一般都是参考某个模块直接去看代码,并没有完整的安装跑一下官方的程序,趁假期简单安装熟悉了一下基于cyber的apollo7.0, 准备后面完整的调试一下感知各个模块。我用的笔记本环境:Ubuntu18.04 cuda10.2 nvidia-driver 470.103.01 ,GPU GTX 1650的,只有4个G显存,有点卡,勉强能跑起来, 主要就是参考apollo github和官网的文档, 大部分没什么问题,简单说一下我遇到的需要注意的几个小问题。
2022-05-04 23:57:58
3404
1
原创 vscode配置自动生成google风格header guard
为了方便多人协作,大家都会尽可能保证程序风格统一,人工检查效率比较低,一半会借助程序工具自动做一些检查,借助C/C++ Snippets自己编写了符合谷歌风格的header guard
2022-04-08 20:48:18
2117
原创 基于Boost Geometry buffer实现多边形扩大或缩小(buffer)
某些场景下需要对多边形的边界进行一定距离的扩大或缩小,查找相关资料时发现了boost的geometry这个宝藏库,提供了个针对几何图形操作的接口,下面简单介绍一下对上面链接中官方buffer demo中的一个参数 "points_per_circle" 测试的理解。
2022-04-06 00:58:30
2764
原创 Linux下Docker安装微信文件传输问题
Docker安装wechat参考博客:Docker安装微信 - 简书Docker安装微信 1.概述 通过安装docker,结合docker GUI在docker上添加wechat容器来实现运行wechat 1.1使用的系统 Linux Min...https://www.jianshu.com/p/2a603db77195拉镜像docker pull bestwu/wechat参考上面博客新建了一个容器,可以新建wechat.shdocker run -d --name wechat -
2022-04-06 00:16:02
1056
原创 关于ROS日志ROS_INFO需要知道的一些东西
之前刚学ros没有太关注过ros的日志消息,感觉ROS_INFO ROS_INFO_STREAM等和printf cout没什么大的区别,还打印一大串时间戳,没什么用,也没有深究,真是年少无知啊!后来随着调试项目的复杂,发现调试中间输出好多信息,到了部署的时候没什么用处,还得注释掉,很麻烦,后来就用了glog.在ros相关的项目中,为了保持格式的一致,又关注了一下ros自身的消息打印,发现还是很好用的,下面简单分享一下比较常用的经验,还有好多没用到的慢慢探索.
2022-03-24 20:31:33
9443
原创 ros::Rate 设定的帧率循环进入一次就卡住
问题:ros::Rate 设定的循环进入一次就卡住解决方案:ros环境使用的仿真时间,时钟源(录的数据包)停止了,设置使用系统时间或者重新播放bag数据包,仿真时间更新即可.或者,中断rosore重新启动.参考:ROS时钟仿真的初探_qq_278667286的博客-CSDN博客ros时钟仿真的初探如果设置了ros时钟仿真参数,发布一个时间的clock话题,就可以控制ros系统的时间。但是当发布clock话题的节点没有运行,会出现什么反应?我得出的答案是当其他所有节点线程遇到延时,执行rospy.sl
2022-03-23 22:12:41
2404
3
原创 ubuntu20.04更新后安装ros2 foxy依赖问题
Ubuntu20.04.3刚装完系统, 然后推荐我更新软件, 然后我就将所有推荐的更新完, 之后进行ros2的安装, 在执行到sudo apt install ros-foxy-desktop时老是出现,E: Unable to correct problems, you have held broken packages.后参考https://www.cnblogs.com/aaron-agu/p/8862624.html 博客使用aptitude自动修复依赖,sudo aptitude .
2021-11-15 00:05:47
2171
原创 利用ros静态坐标变换在rviz显示不同frame_id数据
1. rviz中显示数据需要选定参考frame, 就是ros消息中的frame_id, 对于不同数据通常会有不同的frame_id, 若要同时显示需要通过坐标变换把不同frame关联到一块.2. 对于录制的bag回放需要设置use_sim_time为true, 然后播放bag包时添加--clock即可.rosbag play demo.bag --clock -l下面放个demo的launch<launch> <param name="/use_sim_time
2021-10-12 21:18:18
2167
原创 Xavier远程不接显示器设置分辨率
在Xavier不接显示器用vnc远程的时候默认分辨率为480, 非常小, 这时候可以手动设置分辨率:xrandr --fb 1920x1080但重启之后还是恢复默认设置, 可以修改/etc/X11/xorg.conf文件,添加如下: 分辨率设置1080pSection "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Tegra0" SubSection "Dis
2021-08-27 21:35:50
2831
原创 vscode进行DebugROS工程的launch文件
0. 已经建立建立ros项目工程, 在功能包CMakeLists.txt目录下打开终端, 执行: code . 打开ros项目1. 点击F5, 启动debug(Start Debugging), 弹出对话框, 点击打开launch.json.2. 将configurations里面的东西删掉如下:{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of e
2021-07-01 21:40:04
1554
翻译 改变ros bag 中消息的frame_id 和话题名
1. 改变话题名 参考链接:https://blog.csdn.net/ethan_guo/article/details/80262650rosbag play file.bag /foo:=/bar #/foo是原topic,/bar是新topic2. 改变frame_id 参考链接:http://wiki.ros.org/bag_tools#change_frame_id.py(1) 参考说明下载包含bag_tools的srv_tools http://wiki.ros.org/.
2021-05-16 21:08:56
5408
1
原创 解决Xavier编译ROS工程中cv_bridge找不到的问题
0. 背景:Jetson 系列Xavier 系统18.04, 刷机自带opencv4.1.1版本, 普通机器安装18.04系统后会自带opencv3.2版本, ROS自18.04 Melodic 不再自带opencv, 依赖系统opencv, 因此ros中cv_bridgeConfig.cmake默认指定opencv路径是 "/usr/include/opencv", 而在Xavier 中不存在这一路径, 只有 "/usr/include/opencv4", 因此当你在Xavier 下编译cv_bri.
2021-05-16 19:59:13
1512
原创 NoMachine连接失败出现Authentication failed, please try again!
某天使用nomachine就进不去了,出现Authentication failed, please try again!一搜索,发现这个 问题由来已久,参考https://forums.nomachine.com/topic/authentication-failed-with-nomachine_5-1-62_1-in-ubuntu-desktop-14-04-4-lts于是乎,卸载:sudo dpkg -r nomachine清空文件:sudo rm -rf /usr/NX
2020-12-07 17:58:29
7370
8
原创 远程ARM设备Xavier方法——ZeroTier+nomachine
x86系统下远程可以用向日葵,teamviewer等软件,arm下就没法用,在arm下ZeroTier+nomachine即可实现远程。1. 首先保证Xavier可以上网.2. 安装nomachine arm版本, 下载网址 https://www.nomachine.com/sudo dpkg -i nomachine_****_arm64.deb3. 安装ZeroTiercurl -s https://install.zerotier.com | sudo bash4. ..
2020-11-20 21:04:03
4449
6
原创 rosbag包回放报错Error reading from file: wanted 4 bytes, read 0 bytes修复
录制bag包后可能没有正确结束掉程序,回访出现错误:[ INFO] [1603677455.288200829]: Opening fuse_2020-10-24-18-01-07.bag[FATAL] [1603677455.288476478]: Error reading from file: wanted 4 bytes, read 0 bytes可使用如下命令修复:rosbag reindex xxx-xxx-xxx.bag...
2020-10-26 21:13:20
6609
5
原创 Matlab2020b 的groundTruthLabeler同时标注图像点云测试
matlab2020 自动驾驶工具箱可以进行多信号源的标注,比如同时标注图像和点云,在需要建立自己的图像点云数据集却没有合适的工具情况下可以一试,不过貌似不太好用。欢迎一块交流。先占个坑写点经验总结。官方教程写的不是特别细,而且感觉工具不是特别好用。载入点云和图像序列后,开始标注点云:1. 先去个地面2. 建立类别label3. 调整标注框 ,matlab提示的是:按住a + 滚轮可以同时调整长宽高,经过尝试发现分别按住x y z+滚轮,可以调整对应轴的框长。4. 待我慢慢发现。
2020-10-19 22:13:05
1182
原创 FLIR相机图像延迟解决方案
采用FLIR 相机,基于Spinnaker SDK写的程序在运行一段时间后总是出现延时有时会长达几秒,经过分析发现FLIR 相机默认的是有buffer缓存,默认10帧,且StreamBufferHandlingMode默认为OldestFirst, 这个参数在SpinView设置后,并不能保存,再用程序启动还是默认参数,必须在驱动里面设置MODE: StreamBufferHandlingMode_NewestOnly,设置缓存帧数为1(不能设置为0)。相关说明参考Spinnaker C++ API:
2020-08-12 21:37:43
1770
1
原创 vector 初始化注意
vector建立一个vector后需要初始化,可以直接初始化vector大小int vector_size = 5;vector<pcl::PointCloud> overlap_map(vector_size);//orvector<pcl::PointCloud> overlap_map;for(int i=0;i<vector_size;i++){ pcl::PointCloud pcd; overlap_map.push_back(pcd
2020-07-28 20:11:55
201
原创 ROS 中CompressedImage消息的发布与订阅
背景:某些情况下需要录图像数据的包,非常占空间和带宽,尤其对于一些工业相机图像一张好几兆,每秒30帧的话一份钟好几个G,这时候可以选择的订阅压缩图像,下面直接来个demo。先订阅一个sensor::Image 消息,然后使用image_transport直接发布图像,会同时产生一个压缩image_compressed/compressed和不压缩的image_compressed图像话题,订阅时直接订阅压缩话题即可。#include "ros/ros.h"#include "sensor_msg
2020-07-12 17:31:07
14199
原创 FLIR相机ROS驱动
程序来源Autoware包,详细参考Autoware包中的spinnaker相机驱动,源程序获得图像颜色不正确,稍作修改先转成opencv格式再转为ros消息即可,直接上相关程序,另外CMakeLists.txt的配置可以参考Autoware的写法,积累一下。/* * Copyright 2015-2019 Autoware Foundation. All rights reserved. * * Licensed under the Apache License, Version 2.0 (
2020-06-30 21:57:14
2340
1
原创 Autoware标定激光雷达和相机记录
以Rfans-16为例,简单记录一下自己的学习标定之路。0. 连接相机和激光雷达,激光雷达X轴向前,Y轴向左,Z向上,相机默认正向前方。建立ROS工作空间$ mkdir -p catkin_lidar_camera/src$ catkin_make1. 首先下载相机驱动,可以在github上找usb_cam https://github.com/ros-drivers/usb_cam将usb_cam 包放到src下,同将激光雷达的包放到src下。2. 在catkin_lidar_came
2020-05-31 18:38:48
2152
11
原创 Linux下同型号USB相机端口绑定
1. 在 /etc/udev/rules.d 建立rules文件,例如:sudo vim cam_front.rules2. 粘贴下面内容KERNEL=="video*",KERNELS=="2-7", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="6366", MODE:="0777", SYMLINK+="video1_cam"其中SYMLINK+="video1_cam"为建立的虚拟端口连接,打开相机的时候,将数字序号替换为”/dev/vid
2020-05-10 17:30:07
1642
原创 win10下VS2015编译OpenCV4.2.0的dnn模块调用yolov3模型和CUDA10.2+cudnn7.6.5.32
opencv自4.2.0后dnn模块开始支持GPU加速,所以需要手动编译opencv模块才能用环境配置:win10,VS2015,CUDA10.2,cudnn-10.2-windows10-x64-v7.6.5.32,cmake3.16.3,opencv_contrib-4.2.0,安装步骤参考:https://blog.csdn.net/length85/article/details/10...
2020-04-22 22:22:30
1828
2
原创 OpenCV通过按键控制保存视频并打时间戳C++
0. 程序主要是打开摄像头后,在现实界面,点击‘s’键(start)开始保存视频,点击‘e’键(end)结束保存数据,点ESC退出,视频以开始时间命名.mp4格式。#include <iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;Mat frame;bool save_flag = false;int main(){ cv::VideoWriter video
2020-04-13 21:23:44
1726
原创 c++利用opencv的glob读取目录下特定格式文件路径并按文件名排序后输出到vector
参考博客:OpenCV:glob遍历文件夹下的所有图片改写了一下排序的程序,写了个简单的demo,作为学习记录。直接上代码吧//created:2020.04.06 by Andison#include<iostream>#include<vector>#include<algorithm>#include <opencv2/openc...
2020-04-06 21:29:01
4312
1
原创 FLIR相机测总结
相机在ImagePtr格式转opencv,参考链接:VS 2017 + OpenCV + Spinnaker SDK(PointGrey) 配置 //ImagePtr convertedImage = pResultImage->Convert(PixelFormat_Mono8, HQ_LINEAR);ImagePtr convertedImage = pResultImage-&g...
2020-03-29 14:20:21
2978
1
原创 测量图像传输延时的一个简单方法
0. 背景在有opencv的环境下,使用某家的云远程传输图像using namespace cv;//计算当前时间double t;t = (double)getTickCount()/ getTickFrequency();//转变为字符串string time_tt_double = to_string(t);//dst_img 是将要传输的图片cv::putText...
2020-03-11 19:19:51
3486
原创 Jetpack 4.3 Xavier刷机记录——解决cuda和opencv安装问题
大部分步骤和网上都是一样的,我就不再多说,简单描述一下,说一下我遇到的问题及解决的方法:1. 预先下载官网下载SDK Manager登录账号选择主机(主机可以不用选,确实好像没啥用,干嘛要给自己电脑再装呢。。。)和Xavier型号,为了避免等待下载和安装,我点选择了下面那个先下载后安装,好几个G呢,晚上让它自己下就好了,下完退出,改天(至少留出半天时间准备debug)。2. 准备安装...
2020-03-01 20:21:01
3608
7
原创 Windows10下安装point-cloud-annotation-tool点云标注工具——吐血之路总结
零。为了标注点云数据,经过多方查找免费开源的标注软件,根据使用要求和方便程度最终选择了这款可以在Windows下编译安装的point-cloud-annotation-tool,基于QT和vtk和PCL进行编译使用项目github链接链接:https://github.com/springzfx/point-cloud-annotation-tool项目中说的是:Tested wit...
2020-02-17 00:11:00
9436
31
原创 windows下一种读取Ubuntu文件的简单方法
记录一下写这个博客的心路:电脑双系统win7和ubuntu16.04,前段时间把电脑搞崩了,windows通过系统修复好了,可怎么都进不去Ubuntu了,尝试了各种那个引导修复,什么试用Ubuntu,设置启动引导盘,都试过了就是不行,本想着再安一遍系统把/home重新挂载上,结果到分盘时找不到原来系统盘(分明在我的电脑管理下可以清楚的看到分区,搞不明白),后来开始寻找windows读取linux系...
2020-01-25 14:42:20
4158
原创 牛客C/C++刷体总结(一)
1. 8 进制开头加0,16进制开头加0x。2. char 数组可以用字符串数组进行初始化操作,char str[] = “asdfgh”,不能进行字符串的赋值操作。3. 指针地址相减插值为指针类型的个数。4. 宏定义只是简单的文本替换。定义中没有括号的话是不会加括号运算的。5 . 构造函数在创建对象的时候先调用父类,再调用子类,析构的时候相反。父类指针new子类对象,析构时...
2019-08-26 21:38:55
298
原创 ubuntu下Qt Mutimedia 播放mp3文件注意事项
要求:在ROS项目文件中添加qt界面类,点击按钮播放音频文件。1. 首先添加qt界面类,包含.ui .h .cpp文件,不再详述,基本操作2. 在界面中添加放声音的按钮,以便触发函数,我是添加的tabwidget,需要切换几个页面,添加阅读播放声音的按钮这没啥好写的,都是基本的qt操作,不是我表达的重点。今天调试还算顺利,下面简答阐述一下有点坑的地方。(1)播放音...
2019-06-23 21:57:21
1384
4
原创 C++实现rviz 2D Pose Estimate 功能设置机器人初始坐标
1. 首先查看设置初始坐标的话题 为 /intialpose ,查看消息类型和格式从而决定怎么给它发数据(1)首先打开一个可以自动导航的项目文件,打开rviz,点击2D Pose Estimate 进行初始位姿矫正 ,查看/initialpose消息格式:sun@sun-pc:~$ rostopic info /initialpose Type: geometry_msgs/Pos...
2019-06-06 22:04:29
9175
9
install.zip
2020-04-22
point-cloud-annotation-tool
2020-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人