- 博客(427)
- 资源 (63)
- 收藏
- 关注
原创 Cartographer实现双雷达建图
TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。
2023-11-23 17:30:19
151
原创 Rviz运行报错/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake:44 (_qt5_Core_ch
原因是在修改qt报错问题的时候,删掉了相关的库。重装ros和操作rviz均不能解决问题。最后是把原来删掉的文件拷贝回来才可以;
2023-11-03 14:36:04
35
原创 二维码导航及惯导在二维码导航中的作用
但是在环境不干净的工厂,效果还是不太好的。因为二维码导航的AGV只是在二维码上方的时候才能准确得到位置信息,二维码之前的距离上其实是属于盲导,为了能够让AGV姿态更好,过码的时候不至于调整过大,就需要惯导模块来进行辅助导航。agv有几个位置值是非常重要的,一个是理论位置,还有一个是估算位置,还有一个是实际位置,通过这三个位置之间的差别,你就可以知道怎么去调整了。而且有的时候AGV会有丢码的情况,就是虽然从二维码上方经过,但是并没有识别出二维码,这个时候AGV盲导的距离就更长了,更加需要辅助导航。
2023-11-02 16:49:48
76
原创 cartographer去ros
保持cartographer_ros原封不动,对ros进行改造,使原来的ros变成一个"fake ros",首先把ros"多余"的部分清空,变成空循环,优化程序执行效率,然后再把ros的数据接口、定时器、rosbag等所有重要原始.c文件都打包起来把他们放在一起编译,最后把数据像原来ros的方式"喂"给cartographer_ros并加入ros_bridge,这样既不会丢失输入、输出原始ros的格式,也可以实现所有cartographer_ros的功能。我认为的去ros需要做的工作。
2023-11-02 16:39:12
64
原创 cartographer扫图及调参,调试总结技巧
cartographer的调参很复杂,去cartographer_ros的网页上看看谷歌自己写的tuning methods,单说cartographer的调参,先要确定自己用的主控板或者工控机性能怎么样,这个直接影响你的很多参数和效果,如果你多次测试感觉都不太好或者设备的确算力不够,我还是建议你录制rosbag离线建图。如果你的imu不超过1k的价格(尤其是低于100或者低于200,你自己测试发现零票和磁场干扰是很大的),我是不建议你在cartographer里面用imu的。
2023-11-02 16:35:28
70
原创 cartographer,ros,路径规划近两年的工作笔记
先验位姿的权重调大,平移和旋转的权重调小,而如果调参没作用的时候,(如果没有使用暴力匹配,测试的结果不准的时候,可以把ceres_scan_match_2d.cc的line 105,把计算残差的功能去掉,前端的先验位姿不准,后面ceres使用了不准的位姿,此时不准的位姿就会把准确的雷达和地图都带歪了,因此可以把ceres的平移和旋转的残差注释掉,不依赖其他任务的任务直接执行,依赖其他任务的任务,他依赖的任务执行完后,依赖计数就会减去1,当他所有的依赖任务执行玩,这个任务就被执行。
2023-11-02 15:59:48
260
原创 激光雷达的特性总结
理想情况下,脉冲打到物体表面是一个理想的光斑点,但由于实际的脉冲存在一定的发散角,所以打到物体上会是一个面,且随距离增加,这个面会越大。图中 p1 和 p2 代表一帧中相邻两点,根据拖尾形成的原因,这里对角度 a 进行判断,判断 a 是否在阈值之内,不在阈值内的点就当作拖尾点进行去除,如果a大于设置的角度阈值ShadowMaxAngle或者小于ShadowMinAngle时,则将附近邻域范围(ShadowNeighbours)内的激光点认为时无效点。此外还要考虑到同一个光斑打到不同物体上所形成的拖尾。
2023-11-02 15:01:05
111
原创 /usr/lib/x86_64-linux-gnu/libQt5Core.so.not found的解决办法
原因是ros在安装的时候,也安装了一些qt的依赖库,位于/usr/lib/x86_64-linux-gnu/路径。删掉这些库,用自己安装的库替换掉即可。
2023-11-02 14:57:51
184
原创 Ros2 自己修改的cartographer代码编译后不生效的解决办法
原因是ros2在安装一些库的时候,在ros2的路径下生成了cartographer,默认找到了ros下,导致的,把这些库删掉即可。
2023-11-02 14:56:47
51
原创 windows使用mstsc登录Ubuntu22远程桌面教程
此时,重启也是可以连接的了。但是还有一个问题,就是如果Ubuntu系统没有连接显示屏,则远程桌面也一闪而过,因为此时没有显示桌面输出,无法共享。在设置好以后,远程桌面已经可以用了,但是发现每次重启以后,还需要重新配置一遍。上,可以使用RDP协议远程访问和控制Ubuntu桌面环境。也可以设置一个虚拟屏幕。重启后,不连接显示屏的情况下,会有一个虚拟屏幕。server一直配不好配置,出现各种问题。最近更新了ubuntu22.04的系统,装。输入用户名密码后,即可登录远程桌面。Window终端输入 mstsc。
2023-08-16 15:12:41
559
原创 ros中使用moveit进行pick和place
moveit_msgs::Grasp 消息的相关字段是: - trajectory_msgs/JointTrajectory pre_grasp_posture - 在我们进行掌握之前,这定义了末端执行器组中关节的轨迹位置。因此,panda_link8的位置= 5 - (立方体的长度/ 2 - 距离b / w panda_link8和掌纹的掌纹 - 一些额外的填充)moveit_msgs/GripperTranslation pre_grasp_approach - 用于定义接近物体的方向和行进距离。
2023-03-06 09:51:51
516
1
原创 QXmlStreamReader和QXmlStreamWriter实现将一个xml文件读取后保存为另一个xml
是一个xml解析器,用于读取xml文件,相对的是QXmlStreamWriter类,是用于写入xml文件是一个快速的解析器,可以通过流api实现读取规范格式的xml文件;当读取器报告开始元素时,属性由attributes() 中的QXmlStreamReader返回。//对应于writeStartDocument(),当调用这个函数时,即表示文档信息写入完毕。//*QFile类QT的文件的输入输出设备类。//测试当前内容节点是否是开始标记。遍历旧的xml文件,按照格式输出的新的xml文件。
2023-03-06 09:51:30
406
原创 opencv中霍夫变换绘制出图案里的直线
Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性;应用很广泛,也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。 霍夫变换于1962年由Paul Hough 首次提出;
2023-03-06 09:48:36
313
原创 python从csv文件读取数据并绘制成折线图
包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。同时对csv中矩阵的处理是用的numpy库。from mpl_toolkits.mplot3d import Axes3D --文件路径 csv_data = np.loadtxt(open('/home/yifei/Proj/PythonProj/getboundary/csvs/fozi.csv',"rb"),delimiter=",",skiprows=0)
2023-03-06 09:48:18
2862
原创 反光柱畸变对比
最近,打算优化一下反光柱定位的程序,想通过前期处理将反光柱和反光贴区分出来。但是没想到,试了斜率、距离方差,强度方差等各种参数。依然没找到稳定的区分方法。可以发现,反光贴交界处有很严重的畸变。倍加福r2000因为本身点云发散更厉害,看起来畸变小一些。最后测试了一下反光贴的畸变。发现并没有那样简单。是把反光贴贴在了一个反射率10%的标准材料上。但是倍加福r2000和兴颂LE表现如下。原本没有贴反光贴的效果。
2022-11-11 17:00:07
294
原创 Keil 出现No Browse information available解决方法
解决方法:选中target1,然后点击右键,选择 option for target 'target1' ,在弹出的对话框中选择output选项卡,看Browse information 选项有没有勾选,如果没有,请勾选,然后把你的工程rebuild 一次。
2022-09-13 08:40:45
2624
原创 stm32的ADC通道错乱原因分析
引脚J4.2连接电位器,发现电位器到端点时,会出现调试时中断,找不到芯片的现象。后发现是给芯片的电压高于3.3V把J4.3修改成3.3V后,又偶尔会出现通道错乱的情况。后发现是电流高于芯片单个引脚所能允许的最大电流5mA后修改成以下电路,问题解决在某些项目中,发现adc通道会相反。发现和adc初始化的位置有关系。相关代码如下MAX3485_USART_
2022-09-13 08:39:31
676
原创 万集wlr718雷达测试记录和stm32h745驱动编写,数据分析
根据规格书中指示,找到对应的强度和距离数据,每一圈的数据,不是一帧发布完的,而是分成多帧,如果不获取强度,则是二帧,如果需要强度,则是强度2帧,距离二帧。最后发现是电路板上用的网卡芯片是5500,他不支持反转,万集网卡也不支持自适应反转;WLR-718可以提供270°范围的点云数据,180°的位置处于传感器的正前方,WLR-718 存在一段 90°的盲区,位于 45°-0° -315°的区间。在俯视的视角下,角度随着顺时针方向递增。以下为距离信息,略----Stm32h745驱动编写。
2022-09-09 14:06:26
377
原创 ros建图过程中给上位机发布地图信息
一种是OpenCV处理后的png图(3900平方米,300kb)加分辨率信息和左下角像素坐标信息。在cartographer建图的过程中,把地图信息转化成png格式,定时对上位机进行发布。定义在mapstream.msg文件中。一种是mapstream结构体。
2022-09-09 13:25:19
1033
原创 霍夫变换绘制出图案里的直线
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) --注 cvtColor用于将图像从一个颜色空间转换到另一个颜色空间的转换;常见的颜色空间均支持;在转换的过程中能够保证转换后的图像的数据类型和位深与源图像一致;lines = cv2.HoughLines(edges,1,np.pi/180,200) HoughLines()函数可以找出采用标准霍夫变换的二值图像线条;cv2.imwrite('houghlines3.jpg',img) --图像的保存。
2022-09-09 11:54:32
1004
原创 反光柱建图和定位总结
反光柱建图流程实际的算法测试发现,如果一边控制车走,一边程序自动建图,会出现在真实的柱子周围飞出多余的点。这个应该是累积误差引起的。需要像slam算法中,进行回环优化。因此暂时采用手动加点,到一个位置后,界面点击添加新点,才会把扫到的反光柱记录下。界面截图定位精度测试(用激光追踪仪测得的位移与我反光柱定位的位移做比较)TODO添加反光柱坐标的累计求评价功能,测试定位精度。参考自万集雷达的上位机建图过程视频反光柱使用倍加福...
2022-05-27 11:30:52
1344
3
原创 去ros所需的工作总结
1.cartographer去rosCartographer是谷歌开源的一个slam框架,他各个模块独立性很强, 代码鲁棒性非常高, 很少出现莫名崩掉的情况, 而且编写的架构很好。所以大部分做单线激光slam的公司都会用他的代码进行借鉴和修改。所以我的打算也是在cartographer基础上进行建图和定位的功能开发。Cartographer其实本身是独立的,不依赖于ros,但是数据的流转等这些功能需要有接口完成这些功能,cartographer_ros 就是cartographer和ros的一个桥梁
2022-04-18 17:20:58
548
原创 OdomLaserCalibraTool标定工具的使用及踩坑记录
首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】GitHub地址GitHub - tzhangZJU/OdomLaserCalibraTool: Extrinsic Calibration of a Odom and 2d Laser作者博客2d Laser 和 Odomter 内外参数标定工具原理及使用方法_知行合一-CSDN博客其实只是记录了一下我自己的标定过程,和错误解决方法。其实博客和GitHub中也有提及Error1这个是由于.
2021-12-26 11:15:01
1164
5
原创 Qt绘制出思岚雷达扫描到的轮廓
首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】Qt绘制出思岚雷达的扫描轮廓1 配置思岚sdk的依赖库可以参考我的qt pro文件的内容,按照实际路径添加INCLUDEPATH += /home/kobe/QtProj/rplidar_sdk-release-v1.11.0/sdk/sdk/includeINCLUDEPATH += /home/kobe/QtProj/rplidar_sdk-release-v1.11.0/sdk/sdk/srcuni.
2021-12-10 09:22:20
1294
原创 amcl定位过程中发布机器人在地图中位姿的总结
目前要实现的应用是amcl匹配后,得到车体位姿,然后发布到外部使用起初我是采用订阅amcl发布的amcl_pose话题的方法代码如下参考ROS:订阅话题并发布(订阅amcl_pose数据并发布)_Better-ing的博客-CSDN博客class amcl_pose_sub_pub {private: ros::NodeHandle nh_; // 定义ROS句柄 ros::Publisher msgPointPub; ros::Subscriber sub;
2021-11-29 10:59:32
1431
4
原创 ros与底盘串口通讯缓存数据及解析C++
在调试底盘ros包的过程里,出现tf树更新不及时问题,以为是串口堵塞,没有及时处理底盘发送的数据,因此创建了一个串口缓冲区,用的是队列queue <unsigned char> bufferq;其中主要注意的是新来的数据写入queue,已处理的数据在queue中pop出数据的获取/********************************************************函数功能:从下位机读取数据入口参数:无出口参数:bool*********
2021-11-26 10:49:39
1319
原创 ros底盘驱动包存在scan跟不上车体运行的错误调试过程
现象描述一个和底盘通讯的代码和ros包,总是发现当控制车体运行一段距离,rviz里面scan的数据更新会过一秒才能跟着运动走,同时发现tf的base_link也是过一秒才更新调试过程起初,以为是串口堵塞,没有及时的接受和处理底盘上行发布的轮速信息导致,之后写了一个串口缓存程序,但是发现并不是串口堵塞导致,而且odom更新是实时的。之后发现map到base_footprint的tf的变换是卡顿的,起初跳动一下,之后才跳动成与odom差不多的数值。此时认为是odom的更新不正确,在odo
2021-11-26 10:41:30
466
原创 cartographer运行错误集合
播放bag的时候错误Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecisetracking frame不是imu的link修改lua文件中的.
2021-11-26 10:26:10
1326
原创 cartographer近期调试总结
1 当底盘发布odom的时候,carto的配置中 published_frame = "odom", 说明carto发布的tf是: map -> footprint provide_odom_frame = false, 此时Carto不需要发布odom 如果为true,则tf树为map->odom->footprint当使用纯定位的时候,实际使用的就是carto到odom或者到footprint的tfTf树如同...
2021-11-26 10:22:19
532
3
原创 cartographer纯定位后机器人位姿的使用
Cartographer的纯定位,实际上是获得了map到车体的tf,如果使用机器人位姿,当用于导航的时候,只需要在move_base 里配置好对应的节点,即可导航我的move base 配置如下global如下,local同样global_costmap: global_frame: map robot_base_frame: base_footprint update_frequency: 1.0 publish_frequency: 0.5 stati
2021-11-26 10:21:07
1549
原创 剪贴板传输
PCB布线规则详解1 电源、地线的处理 既使在整个PCB板中的布线完成得都很好,但由于电源、地线的考虑不周到而引起的干扰,会使产品的性能下降,有时甚至影响到产品的成功率。所以对电、 地线的布线要认真对待,把电、地线所产生的噪音干扰降到最低限度,以保证产品的质量。对每个从事电子产品设计的工程人员来说都明白地线与电源线之间噪音所产生的原因, 现只对降低式抑制噪音作以表述: 众所周知的是在电
2021-11-17 14:55:44
127
原创 cartographer实现纯定位
实现纯定位(1)因为正常的cartographer的建图的map是由cartographer发布的;如下rostopic info /mapType: nav_msgs/OccupancyGridPublishers:* /cartographer_occupancy_grid_node因此需要把map的发布替换成<node name="map_server" pkg="map_server" type="map_server"args="/home/lx.
2021-09-29 14:37:14
4365
4
原创 cartographer调参总结
# (1)POSE_GRAPH.optimize_every_n_nodes#设置成0把后端优化去掉,相当于把前端和后端区分开来,这样如果建图有问题,说明是前端的参数需要调整,先优化前端而如果前端没有问题,再把此数值改回去,调整后端的参数# (2)cere匹配器相关参数#TRAJECTORY_BUILDER_nD.ceres_scan_matcher.translation_weight【翻译官方文档:在我们的例子中,扫描匹配器可以在不影响分数的情况下自由地前后移动匹配。我们希望..
2021-09-29 14:35:56
920
原创 Cartographer参数调整来降低延迟的策略
# 后端参数优化减少 optimize_every_n_nodes(// 插入的节点数大于optimize_every_n_nodes时执行一次优化)这样优化的频率更高了,如果出现了回环,就会立即被找到增加MAP_BUILDER.num_background_threads核心数,核心增加后,后端实时高,延迟降低减少 global_sampling_ratio降低了回环约束的采样频率,降低了后端优化的数量,降低了计算量减少 constraint_builder.s..
2021-09-29 14:34:31
577
原创 ros中bag的录制和使用bag进行建图
# 录制bag#在建图时候,除了正常的建图和底盘控制脚本外,加入录制bag的脚本rosbag record -a但是录制所有的话题,bag文件会比较大,可以只录制需要的话题rosbag record /imu /tf /scan /odom /tf_static只需要录制imu 里程计,激光雷达和tf数据即可关于/tf、/tf_static/tf:动态的位置关系将会发布到此topic,这里的动态指的是机器人描述文件中活动joint/tf_static:固定的位置关系会发布..
2021-09-29 14:33:11
1201
原创 ros中move_base的使用
move_base概述move_base 包提供了一个动作的实现(参见actionlib包),给定世界上的目标,它将尝试使用移动基地来实现它。move_base 节点将全局和本地规划器链接在一起以完成其全局导航任务。它支持任何遵循在nav_core包中指定的 nav_core::BaseGlobalPlanner 接口的全局规划器和任何遵循在nav_core包中指定的 nav_core::BaseLocalPlanner 接口的本地规划器。move_base 节点还维护两个成本地图,一个用于全局规划器,
2021-09-27 16:35:52
1764
原创 ros中bag的录制和使用bag进行建图
录制bag在建图时候,除了正常的建图和底盘控制脚本外,加入录制bag的脚本rosbag record -a但是录制所有的话题,bag文件会比较大,可以只录制需要的话题rosbag record /imu /tf /scan /odom /tf_static只需要录制imu 里程计,激光雷达和tf数据即可关于/tf、/tf_static/tf:动态的位置关系将会发布到此topic,这里的动态指的是机器人描述文件中活动joint/tf_static:固定的位置关系会发布到此to.
2021-09-27 16:33:54
418
原创 robot_pose_ekf运行报错问题解决
运行的时候ekf报错原因是我在官网下载的ekf源码包不对应,虽然已经选择了对应的ros版本,依然报错因此采用不吧ekf包放到我自己工程的方法,而是把他用ros命令安装首先,删掉我在我源码包中的ekf功能包rm -r robot_pose_ekf然后用ros命令安装此功能包sudo apt-get install ros-kinetic-robot-pose-ekf同时,ekf下的launch文件进行对应的修改roscd robot_pose_ekf/ ls ge...
2021-09-10 17:49:12
799
mouseRGB.rar
2020-06-09
puma560的运动学正解和逆解的C++源码.cpp
2020-01-13
机器人学 机器视觉与控制 MATLAB算法基础_中文版及源代码.zip
2019-08-31
Open EtherCAT Society_ Home of SOEM and SOES.pdf
2019-07-16
EtherCAT主站开发方案-含ZedBoard和X86测试数据
2018-11-04
ros2+cartographer实现全局重定位
2023-11-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人