- 博客(18)
- 收藏
- 关注
原创 Teb中的机器人足迹模型(footprint)与动/静障碍物的距离计算方法
源码位于teb_local_planner/include/teb_local_planner/robot_footprint_model.h以及 teb_local_planner/src/obstacles.cpp/h。
2024-12-02 01:20:26
1269
原创 ROS Action
ROS Action 是 ROS 中一种异步的请求-反馈机制,适用于长时间运行任务。通过 Goal、Feedback 和 Result 的组合,Action 提供了一种更加灵活的任务管理方式,支持任务进度反馈和任务中断功能,使其在复杂的机器人任务中非常有用。
2024-11-14 00:54:35
2187
原创 ROS Service
ROS Service 提供了一种便捷的请求-响应通信方式,适用于低频、请求即时处理的场景。通过 .srv 文件定义请求和响应结构,Service 提供了一种标准化的同步通信机制,可用于执行特定命令或获取数据。
2024-11-10 23:42:12
1306
原创 C++ 中的智能指针(Smart Pointer)
std::unique_ptr 和 std::shared_ptr 提供了简单、灵活的资源管理方式,有效降低内存泄漏风险。而 std::weak_ptr 主要用于防止 shared_ptr 的循环引用。
2024-11-10 22:54:00
560
原创 C++的序列式容器(二)list
std::list 是一种双向链表容器,适合频繁插入和删除操作。但list 是链式存储结构,因此它不支持随机访问
2024-11-10 00:50:22
1005
原创 【TF2报错】terminate called after throwing an instance of ‘tf2::ExtrapolationException‘ what(): Looku.
运行自己写的局部路径规划器时遇到一个错误,完整的报错信息为:这个错误信息表示在查找odom到map的tf变换时,系统试图请求的时间超出了当前可用数据的时间范围,具体来说是向时间点的外推(extrapolation)。在这种情况下,tf2库无法提供所需的变换数据,因此抛出了异常。
2024-11-03 23:30:35
1111
原创 常见C++中隐式转换整理
C++ 中的隐式转换(Implicit Type Conversion)是编译器在必要时自动将一种类型的值转换为另一种类型的过程。隐式转换主要发生在以下几种情况下
2024-10-27 21:29:29
992
原创 基于车辆动力学的MPC轨迹跟踪
基于车辆动力学的模型预测控制(MPC)轨迹跟踪控制器是一种常用的先进控制方法,用于在移动机器人、自动驾驶或高级驾驶辅助系统(ADAS)中实现车辆的路径跟踪。其设计的核心思想是利用车辆的动力学模型预测车辆的未来运动状态,基于优化目标生成控制输入,以最优方式跟踪给定的参考轨迹。最小化轨迹跟踪误差:确保车辆尽可能准确地跟踪目标轨迹。平滑控制输入:避免过大的转向角或加速度变化,以提高驾驶平稳性和乘坐舒适性。遵循物理限制:控制输入需要满足车辆的动力学和物理约束,例如速度、加速度和转向角的极限。
2024-10-20 17:52:05
3179
1
原创 Ubuntu16.04运行程序报错 symbol lookup error:.....undefined symbol: _ZN3tbb10interface78internal20isolate_w
在对应的”.so“和”.so.2“文件之间建立一个”.so“指向”.so.2“的符号链接,target_link_libraries中只要添加上。定位问题应该是出在tbb链接库上,依次检查下libtbb.so.2和libtbbmalloc_proxy.so.2在我系统中的位置。方法1: 因为我运行的是ros节点,所以直接在CMakeList.txt中链接tbb相关的库文件。把your_node替换成你自己可执行文件,ros中就是替换成你自己运行出错的节点。看是否能找到路径,确认安装好你所需要的依赖库,
2024-10-11 10:47:19
444
原创 Ubuntu16.04、18.04升级tbb库
而在我的代码中用到了std::execution::seq,这是 C++17 并行 STL 引入的一个执行策略,表示以串行方式(sequential)执行 for_each,尽管代码中指定了串行执行策略,但并行 STL 中依赖的实现通常还是需要 TBB(Threading Building Blocks)等并行库来实现对多线程环境的支持和调度。编译完成后我们安装,我们要把编译好的库文件放到/usr/local/下,并建立升级版tbb的符号链接。升级gcc后,我们到存放tbb压缩包的目录打开一个终端。
2024-10-11 01:13:51
1203
原创 C++ 中的迭代器失效及其预防
在 C++ 中,迭代器是一种用于遍历容器元素的对象。当容器发生了某些操作(如插入、删除、内存重新分配)时,这些操作可能会使得迭代器失效。失效的迭代器指向的内存可能已经被释放或更改,导致程序行为未定义,如输出异常结果、程序崩溃等。迭代器失效引发的未定义行为(UB)可能表现为程序崩溃、数据错误、内存访问异常等,但并不一定每次运行都能观察到。有时,程序运行时即使发生了迭代器失效,内存布局未发生变化,因此访问失效迭代器时看似没有问题,但这依然是不安全的代码。
2024-10-07 17:21:15
2267
原创 ROS参数命名空间理解
在这种情况下,shared_param 是相对路径,因此它会被放在节点的命名空间下。这种方式可以让你更加灵活地组织和管理参数,避免在复杂系统中出现命名冲突,同时也可以通过全局参数在不同命名空间的节点中共享参数。· 使用 nh.getParam(“shared_param”, value) 会查找 shared_param 是否存在于。这时,shared_param 仍然是相对路径,因此它会被放在节点的命名空间 robot1 下。的命名空间(例如 /robot1/shared_param)下。
2024-10-02 18:25:51
668
原创 对‘pcl::search::Search<pcl::PointXYZ>::getName[abi:cxx11]() const’未定义的引用
使用 #include <pcl/search/impl/search.hpp> 可以解决模板类链接错误,因为这个头文件包含了 pcl::search::Search 模板类的所有成员函数的实现。
2024-09-27 14:56:29
807
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人