kobesdu
物来则应,过去不留。
展开
-
如何给ubuntu虚拟机扩容
鼠标点击硬盘,弹出对话框后,点击扩展,输入扩展后的硬盘大小,我这里扩展到100G。原创 2024-07-10 13:56:12 · 349 阅读 · 0 评论 -
liosam编译问题
实际问题是库文件libmetis.so 的位置。它是一个运行时库,但是当应用程序查找它时,它的位置不在预期的目录中。在通过运行命令sudo make install -j8安装库gtsam 时,文件libmetis.so安装在/usr/local/lib/的默认位置,但是当我们启动 ros 工作区时,运行时库查看位置/opt/ros/melodic/库/因为lego安装时已经安装了gtsam因子图优化库,所以不需要再安装。因此我又重新编译了liosam工作空间。也就是说重新编译gtsam。原创 2024-07-09 09:12:28 · 293 阅读 · 0 评论 -
legoloam算法环境配置和调试笔记
文件夹pc2occupancygrid中的cmakelist.txt。出现这个说明卡了,重新执行make这步。GTSAM库,eigen安装依赖问题。可在.bashrc中添加。中的说明,修改相关路径。快建图完成的时候运行。原创 2024-07-09 09:10:33 · 176 阅读 · 0 评论 -
navigation运动规划学习笔记
提供的默认插件是从ROS 1移植过来的,即:DWB、NavFn,以及类似的恢复,如旋转和清除成本地图。还增加了一个新的等待固定时间的恢复。DWA算法的核心思想是根据移动机器人当前的位置状态和速度状态在速度空间 ( v , ω ) (v, \omega)(v,ω) 中确定一个满足移动机器人硬件约束的采样速度空间,然后计算移动机器人在这些速度情况下移动一定时间内的轨迹, 并通过评价函数对该轨迹进行评价,最后选出评价最优的轨迹所对应的速度来作为移动机器人运动速度, 如此循环直至移动机器人到达目标点。原创 2024-07-09 09:04:46 · 135 阅读 · 0 评论 -
激光雷达反光板算法总结
(2)实际雷达使用环境中,还会出现玻璃背景、大面积金属背景以及无尘车间中常使用的据有较高反射率的背景面,在这些具有较高反射率的环境中安装靶标,应避免将靶标安装在距离这类背景面较近的位置,至少保证有1米的水平距离,若无法避免,在靶标安装的背景面上贴上反射率较弱的贴纸,如透明磨砂贴纸这类漫反射贴纸;距离要求至少1米的距离。(3)在实际使用过程中,通常会出现将靶标安装在拐角的位置,拐角分为凹角和凸角两种情况,凹墙面安装靶标,靶标距离墙角的距离应保证大于1m;根据雷达的规格书提供的不同材料的强度,设定合适的阈值;原创 2024-02-21 16:38:54 · 975 阅读 · 1 评论 -
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 · 838 阅读 · 3 评论 -
Rviz运行报错/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake:44 (_qt5_Core_ch
原因是在修改qt报错问题的时候,删掉了相关的库。重装ros和操作rviz均不能解决问题。最后是把原来删掉的文件拷贝回来才可以;原创 2023-11-03 14:36:04 · 303 阅读 · 0 评论 -
二维码导航及惯导在二维码导航中的作用
但是在环境不干净的工厂,效果还是不太好的。因为二维码导航的AGV只是在二维码上方的时候才能准确得到位置信息,二维码之前的距离上其实是属于盲导,为了能够让AGV姿态更好,过码的时候不至于调整过大,就需要惯导模块来进行辅助导航。agv有几个位置值是非常重要的,一个是理论位置,还有一个是估算位置,还有一个是实际位置,通过这三个位置之间的差别,你就可以知道怎么去调整了。而且有的时候AGV会有丢码的情况,就是虽然从二维码上方经过,但是并没有识别出二维码,这个时候AGV盲导的距离就更长了,更加需要辅助导航。原创 2023-11-02 16:49:48 · 531 阅读 · 0 评论 -
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 · 259 阅读 · 0 评论 -
cartographer扫图及调参,调试总结技巧
cartographer的调参很复杂,去cartographer_ros的网页上看看谷歌自己写的tuning methods,单说cartographer的调参,先要确定自己用的主控板或者工控机性能怎么样,这个直接影响你的很多参数和效果,如果你多次测试感觉都不太好或者设备的确算力不够,我还是建议你录制rosbag离线建图。如果你的imu不超过1k的价格(尤其是低于100或者低于200,你自己测试发现零票和磁场干扰是很大的),我是不建议你在cartographer里面用imu的。原创 2023-11-02 16:35:28 · 395 阅读 · 0 评论 -
cartographer,ros,路径规划近两年的工作笔记
先验位姿的权重调大,平移和旋转的权重调小,而如果调参没作用的时候,(如果没有使用暴力匹配,测试的结果不准的时候,可以把ceres_scan_match_2d.cc的line 105,把计算残差的功能去掉,前端的先验位姿不准,后面ceres使用了不准的位姿,此时不准的位姿就会把准确的雷达和地图都带歪了,因此可以把ceres的平移和旋转的残差注释掉,不依赖其他任务的任务直接执行,依赖其他任务的任务,他依赖的任务执行完后,依赖计数就会减去1,当他所有的依赖任务执行玩,这个任务就被执行。原创 2023-11-02 15:59:48 · 657 阅读 · 0 评论 -
激光雷达的特性总结
理想情况下,脉冲打到物体表面是一个理想的光斑点,但由于实际的脉冲存在一定的发散角,所以打到物体上会是一个面,且随距离增加,这个面会越大。图中 p1 和 p2 代表一帧中相邻两点,根据拖尾形成的原因,这里对角度 a 进行判断,判断 a 是否在阈值之内,不在阈值内的点就当作拖尾点进行去除,如果a大于设置的角度阈值ShadowMaxAngle或者小于ShadowMinAngle时,则将附近邻域范围(ShadowNeighbours)内的激光点认为时无效点。此外还要考虑到同一个光斑打到不同物体上所形成的拖尾。原创 2023-11-02 15:01:05 · 706 阅读 · 0 评论 -
/usr/lib/x86_64-linux-gnu/libQt5Core.so.not found的解决办法
原因是ros在安装的时候,也安装了一些qt的依赖库,位于/usr/lib/x86_64-linux-gnu/路径。删掉这些库,用自己安装的库替换掉即可。原创 2023-11-02 14:57:51 · 1504 阅读 · 0 评论 -
Ros2 自己修改的cartographer代码编译后不生效的解决办法
原因是ros2在安装一些库的时候,在ros2的路径下生成了cartographer,默认找到了ros下,导致的,把这些库删掉即可。原创 2023-11-02 14:56:47 · 321 阅读 · 0 评论 -
windows使用mstsc登录Ubuntu22远程桌面教程
此时,重启也是可以连接的了。但是还有一个问题,就是如果Ubuntu系统没有连接显示屏,则远程桌面也一闪而过,因为此时没有显示桌面输出,无法共享。在设置好以后,远程桌面已经可以用了,但是发现每次重启以后,还需要重新配置一遍。上,可以使用RDP协议远程访问和控制Ubuntu桌面环境。也可以设置一个虚拟屏幕。重启后,不连接显示屏的情况下,会有一个虚拟屏幕。server一直配不好配置,出现各种问题。最近更新了ubuntu22.04的系统,装。输入用户名密码后,即可登录远程桌面。Window终端输入 mstsc。原创 2023-08-16 15:12:41 · 924 阅读 · 0 评论 -
反光柱畸变对比
最近,打算优化一下反光柱定位的程序,想通过前期处理将反光柱和反光贴区分出来。但是没想到,试了斜率、距离方差,强度方差等各种参数。依然没找到稳定的区分方法。可以发现,反光贴交界处有很严重的畸变。倍加福r2000因为本身点云发散更厉害,看起来畸变小一些。最后测试了一下反光贴的畸变。发现并没有那样简单。是把反光贴贴在了一个反射率10%的标准材料上。但是倍加福r2000和兴颂LE表现如下。原本没有贴反光贴的效果。原创 2022-11-11 17:00:07 · 513 阅读 · 0 评论 -
万集wlr718雷达测试记录和stm32h745驱动编写,数据分析
根据规格书中指示,找到对应的强度和距离数据,每一圈的数据,不是一帧发布完的,而是分成多帧,如果不获取强度,则是二帧,如果需要强度,则是强度2帧,距离二帧。最后发现是电路板上用的网卡芯片是5500,他不支持反转,万集网卡也不支持自适应反转;WLR-718可以提供270°范围的点云数据,180°的位置处于传感器的正前方,WLR-718 存在一段 90°的盲区,位于 45°-0° -315°的区间。在俯视的视角下,角度随着顺时针方向递增。以下为距离信息,略----Stm32h745驱动编写。原创 2022-09-09 14:06:26 · 654 阅读 · 0 评论 -
ros建图过程中给上位机发布地图信息
一种是OpenCV处理后的png图(3900平方米,300kb)加分辨率信息和左下角像素坐标信息。在cartographer建图的过程中,把地图信息转化成png格式,定时对上位机进行发布。定义在mapstream.msg文件中。一种是mapstream结构体。原创 2022-09-09 13:25:19 · 1218 阅读 · 0 评论 -
反光柱建图和定位总结
反光柱建图流程实际的算法测试发现,如果一边控制车走,一边程序自动建图,会出现在真实的柱子周围飞出多余的点。这个应该是累积误差引起的。需要像slam算法中,进行回环优化。因此暂时采用手动加点,到一个位置后,界面点击添加新点,才会把扫到的反光柱记录下。界面截图定位精度测试(用激光追踪仪测得的位移与我反光柱定位的位移做比较)TODO添加反光柱坐标的累计求评价功能,测试定位精度。参考自万集雷达的上位机建图过程视频反光柱使用倍加福...原创 2022-05-27 11:30:52 · 2152 阅读 · 3 评论 -
Qt使用gmapping建图并用OpenCV显示且不用ros
建图效果原创 2022-05-26 10:02:45 · 436 阅读 · 2 评论 -
去ros所需的工作总结
1.cartographer去rosCartographer是谷歌开源的一个slam框架,他各个模块独立性很强, 代码鲁棒性非常高, 很少出现莫名崩掉的情况, 而且编写的架构很好。所以大部分做单线激光slam的公司都会用他的代码进行借鉴和修改。所以我的打算也是在cartographer基础上进行建图和定位的功能开发。Cartographer其实本身是独立的,不依赖于ros,但是数据的流转等这些功能需要有接口完成这些功能,cartographer_ros 就是cartographer和ros的一个桥梁原创 2022-04-18 17:20:58 · 846 阅读 · 0 评论 -
OdomLaserCalibraTool标定工具的使用及踩坑记录
首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】GitHub地址GitHub - tzhangZJU/OdomLaserCalibraTool: Extrinsic Calibration of a Odom and 2d Laser作者博客2d Laser 和 Odomter 内外参数标定工具原理及使用方法_知行合一-优快云博客其实只是记录了一下我自己的标定过程,和错误解决方法。其实博客和GitHub中也有提及Error1这个是由于.原创 2021-12-26 11:15:01 · 1501 阅读 · 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 · 1433 阅读 · 0 评论 -
amcl定位过程中发布机器人在地图中位姿的总结
目前要实现的应用是amcl匹配后,得到车体位姿,然后发布到外部使用起初我是采用订阅amcl发布的amcl_pose话题的方法代码如下参考ROS:订阅话题并发布(订阅amcl_pose数据并发布)_Better-ing的博客-优快云博客class amcl_pose_sub_pub {private: ros::NodeHandle nh_; // 定义ROS句柄 ros::Publisher msgPointPub; ros::Subscriber sub;原创 2021-11-29 10:59:32 · 1811 阅读 · 4 评论 -
ros与底盘串口通讯缓存数据及解析C++
在调试底盘ros包的过程里,出现tf树更新不及时问题,以为是串口堵塞,没有及时处理底盘发送的数据,因此创建了一个串口缓冲区,用的是队列queue <unsigned char> bufferq;其中主要注意的是新来的数据写入queue,已处理的数据在queue中pop出数据的获取/********************************************************函数功能:从下位机读取数据入口参数:无出口参数:bool*********原创 2021-11-26 10:49:39 · 1500 阅读 · 0 评论 -
ros底盘驱动包存在scan跟不上车体运行的错误调试过程
现象描述一个和底盘通讯的代码和ros包,总是发现当控制车体运行一段距离,rviz里面scan的数据更新会过一秒才能跟着运动走,同时发现tf的base_link也是过一秒才更新调试过程起初,以为是串口堵塞,没有及时的接受和处理底盘上行发布的轮速信息导致,之后写了一个串口缓存程序,但是发现并不是串口堵塞导致,而且odom更新是实时的。之后发现map到base_footprint的tf的变换是卡顿的,起初跳动一下,之后才跳动成与odom差不多的数值。此时认为是odom的更新不正确,在odo原创 2021-11-26 10:41:30 · 583 阅读 · 0 评论 -
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 · 1791 阅读 · 0 评论 -
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 · 767 阅读 · 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 · 1887 阅读 · 0 评论 -
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 · 5239 阅读 · 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 · 1155 阅读 · 0 评论 -
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 · 855 阅读 · 0 评论 -
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 · 1526 阅读 · 0 评论 -
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 · 2250 阅读 · 0 评论 -
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 · 748 阅读 · 0 评论 -
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 · 1465 阅读 · 0 评论 -
Ubuntu16.04下驱动西克雷达 LMS511及用进行slam建图
\Ubuntu16.04下驱动西克雷达 LMS511及用rviz数据显示1 硬件连接首先根据《02-LMS511操作手册》进行硬件连接其中的1 角是24+其中的3脚是GND2和 4脚只是加热作用Lms511只需要提供24v供电和网线连接即可2软件连接Windows下用SOPAS软件进行连接(注:使用串口连接无法获得实时图象) LMS5XX 的出厂 IP 一般设置为 192.168.0.1,当通过以太网连接 PC 时, PC 的 IP 段必须与LMS5XX 的 IP 段相同,原创 2021-08-22 09:30:31 · 584 阅读 · 0 评论 -
move_base_params.yaml参数解析
# Move base node parameters. For full documentation of the parameters in this file, please see## http://www.ros.org/wiki/move_base## 当 move_base 在不活动状态时,是否关掉 costmapshutdown_costmaps: false# 向底盘控制移动话题 cmd_vel 发送命令的频率。controller_frequency: 2.0# 在空.原创 2021-08-10 11:33:29 · 1833 阅读 · 0 评论 -
local_costmap_params.yaml参数注释
local_costmap:global_frame: odom_combined# robot_base_frame这个通常不是/ base link就是/ base_ footprint对于TurtleBot应设为/ base_footprintrobot_base_frame: /base_footprintupdate_frequency: 3.0publish_frequency: 1.0# 这个参数和下一个参数通常会设为相反的值。全局地图通常是静态的,因此我们通常会把这个参数设为tr原创 2021-08-10 11:31:23 · 3056 阅读 · 0 评论 -
关于二轮差速小车轮速计算和里程计计算
local_costmap:global_frame: odom_combined# robot_base_frame这个通常不是/ base link就是/ base_ footprint对于TurtleBot应设为/ base_footprintrobot_base_frame: /base_footprintupdate_frequency: 3.0publish_frequency: 1.0# 这个参数和下一个参数通常会设为相反的值。全局地图通常是静态的,因此我们通常会把这个参数设为tr原创 2021-08-28 09:18:42 · 2068 阅读 · 1 评论