- 博客(470)
- 资源 (6)
- 收藏
- 关注
原创 Error Code 12 Msg: Unable to find uri[model://ground_plane]
ubuntu16.04 安装turtlebot3仿真,运行之后发现报这个错误,然后没有小车。
2024-04-23 15:57:25 160
原创 You must call ros::init() before creating the first NodeHandle
在代码里我们先实例化了qnode类,所以在qnode的头文件中,我们先实例化了ros::NodeHandle nh,后调用了ros::init(),导致程序报错。你必须在创建NodeHandle之前先调用ros::init()函数。qnode.h中注释没有使用的NodeHandle变量。
2024-04-01 12:08:04 193
原创 linux 获取cpu和硬盘id
std::string get_harddisk_info()来获取硬盘id。直接代码,有的电脑cpuid可能没有,代码头文件没有理清但是满足编译需求。std::string getcpuid() 来获取cpu id信息。
2024-03-21 17:30:36 228
原创 ConnectedComponents类
std::map是一个关联容器,它要求元素的键是唯一的。如果尝试插入一个已经存在的键,emplace函数将不会进行插入操作,而是返回指向已经存在的元素的迭代器。就是把一个本来应该是网状的结构变成了单链,就好像你和朋友是小李,小李的朋友是小王,那我和小王也是朋友,用单链串起来就可以。所以这里的forest_其实是在维护一个单链关系,就像作者说的压缩路径,什么意思呢?我们可以通过检查返回的迭代器是否等于std::map::end来确定插入是否成功。这个类有个变量很有意思。
2024-03-17 20:22:52 31
原创 tf2使用注意事项
虽然感觉tf2_ros::TransformListener没有被使用,但是这个变量在程序运行时要一直存在的,如果被定义为临时变量就打错特错了。
2024-03-08 17:41:16 131
原创 qt如何配置ros环境
在Qt5.7的版本可以使用bash -i -c来启动qt,让Qt自己识别系统环境,不知道为什么Qt在之后的版本,这样使用都失效了。因为它会默认把CMAKE_PREFIX_PATH修改掉。网上还有安装ros插件版本的qt creator,感觉失去了一些灵活性。自己测试发现,只要在CMakeList.txt中加入ros的库信息即可。但是运行的时候还要配置ROS的一个变量ROS_MASTER_URI。具体位置在qt的Build Environment。这样编译是没有问题的。
2024-03-08 13:57:34 366
原创 CMakelist uninstall
大家可能都用过sudo make install,但是如何uninstall却不知道。要求build文件夹存在且install_manifest.txt文件夹还在。如果没有需要先编译安装后再卸载。
2024-03-01 10:39:42 222
原创 cartographer ceres后端优化
这里引用一篇文章作用一:用户可以选择使用Problem::AddParameterBlock显式添加参数块;在显式添加的时候ceres会内部进行额外的正确性检查。当Problem::AddParameterBlock()不存在时,Problem::AddResidualBlock()会隐式添加参数块,因此不需要显式调用Problem::AddParameterBlock()函数。ps:类似构造函数,显式构造函数。
2024-02-28 16:24:43 442
原创 gitee使用
注意:也不知道什么原因,第一次要git pull origin HEAD。参考网址:https://gitee.com/layene/gitee。
2024-01-03 10:15:20 400
原创 VIO和预积分(蒙圈的请过来,带你不蒙圈)
大佬的世界,你不会懂,就像一行行公式,人家觉得很简单,你却要读很多遍,不过还好,我们从普通人的世界来解读VIO和预积分。
2023-09-26 17:48:58 294
原创 Rviz插件分析(status_panel)
看不懂的先在上面学习一波,主要分为5个部分:PACKAGE SETUP (自身包的配置)、QT(QT环境的配置)、FILES(文件引入)、LIBRARY(生成库文件设置)、INSTALL(打包发布的配置)我们可能还注意到了插件的icons图标,放一个png在路径/icons/classes/*.png即可。这里StatusPanel继承了rviz::Panel类,覆写了2个函数。再来看看status_panel.h。先来看看CMakeList.txt。使用了2个Qt控件,用于接收和显示。
2023-09-22 16:27:33 216
原创 机器人上位机探索
3、使用qml实现的机器人上位机,适配ROS2。4、使用qml实现的slam探索仿真器。7、vizanti,网页端的机器人显示。1、扫地机器人Qt上位机。2、机械臂仿真上位机。
2023-09-12 09:18:21 339
原创 视觉SLAM14讲笔记-第5讲-相机与图像
畸变产生的原因:一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。在世界坐标系下,所以这两个坐标系之间有一个外参数,也个外参数(R,t)代表机器人在世界坐标系下的运动轨迹。考虑到视觉SLAM中一般都使用普通的摄像头,针孔模型及径向畸变和切向畸变模型已经足够。我们可以使用棋盘格进行标定,这一点张正友博士做了很多的工作。在相机坐标系下的点进行归一化,使得Z=1,即得到相机。位于相机坐标系,一般我的空间点。
2023-09-06 15:47:33 76
原创 视觉SLAM14讲笔记-第4讲-李群与李代数
在优化问题中去解一个旋转矩阵,可能会有一些阻碍,因为它对加法导数不是很友好(旋转矩阵加上一个微小偏移量可能就不是一个旋转矩阵),因为旋转矩阵本身还有一些约束条件,那样再求导的过程中可能会破坏要优化的矩阵是旋转矩阵的本质条件,所以这里引入了一个乘法导数,即本章提到的左扰动或右扰动。BCH公式可以告诉我们当李代数发生了小量变化,旋转矩阵对应的变化,有利于计算出李代数导数,然而这个公式并不是万能的,用BCH线性近似来对李代数求导仍然有比较复杂的。变换矩阵对应的李代数是6维向量,平移在前,旋转在后。
2023-08-29 15:42:51 215
原创 高翔《自动驾驶中的slam技术》第3章代码-run_imu_integration.cc
cartographer使用pose_extrapolator来融合IMU、odom、激光数据来推断位姿。
2023-05-30 10:14:42 518
Principles of Robot Motion Theory, Algorithms, and Implementations
2018-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人