RLException: [rrt_node.launch] is neither a launch file in package [rrt_star_global_planner-main] no

文章列举了三个常见的错误原因:一是未正确配置环境变量,需在终端执行`source./devel/setup.bash`;二是文件互相引用时的命名错误,强调了正确命名的重要性;三是pkg命名错误示例,指出应将`rrt_star_global_planner-main`写为`rrt_star_global_planner`。

错误原因汇总:

1.没有配置环境变量

终端输入`source ./devel/setup.bash`

2.文件相互引用时名称错误

3.pkg名:例如rrt_star_global_planner-main应写成rrt_star_global_planner

在 `std::shared_ptr<T>` 中,`<>` 里的内容是指针所管理的 **模板类型参数**(Template Type Parameter),即智能指针指向的具体对象类型。 ### **1. 你的代码解析** ```cpp std::shared_ptr<path_finder::RRT> rrt_ptr_; // 管理 path_finder::RRT 类对象 std::shared_ptr<path_finder::RRTStar> rrt_star_ptr_; // 管理 path_finder::RRTStar 类对象 std::shared_ptr<path_finder::BRRT> brrt_ptr_; // 管理 path_finder::BRRT 类对象 std::shared_ptr<path_finder::BRRTStar> brrt_star_ptr_; // 管理 path_finder::BRRTStar 类对象 ``` - `path_finder::RRT`、`path_finder::RRTStar` 等是 **命名空间 `path_finder` 下的类**(可能是路径规划算法,如 RRTRRT* 等变体)。 - `std::shared_ptr<T>` 是 **共享所有权的智能指针**,会自动管理 `T` 类型对象的生命周期(引用计数)。 --- ### **2. 为什么需要 `<>`?** - `std::shared_ptr` 是一个 **模板类**(Template Class),必须通过 `<>` 指定其管理的具体类型。 - 编译器会根据 `<>` 内的类型生成对应的智能指针代码(模板实例化)。 --- ### **3. 常见用法示例** #### **(1) 初始化 `shared_ptr`** ```cpp // 方式1:直接 new auto rrt_ptr = std::shared_ptr<path_finder::RRT>(new path_finder::RRT()); // 方式2:使用 make_shared(推荐,更高效) auto rrt_star_ptr = std::make_shared<path_finder::RRTStar>(); ``` #### **(2) 访问对象成员** ```cpp rrt_ptr_->planPath(); // 通过 -> 访问成员函数 (*rrt_ptr_).planPath(); // 等价解引用写法(不推荐) ``` #### **(3) 多态支持** 如果 `RRTStar` 继承自 `RRT`,可以用基类指针管理派生类对象: ```cpp std::shared_ptr<path_finder::RRT> ptr = std::make_shared<path_finder::RRTStar>(); ``` --- ### **4. 与 `std::unique_ptr` 的区别** | 特性 | `std::shared_ptr<T>` | `std::unique_ptr<T>` | |---------------------|-------------------------------|-------------------------------| | **所有权** | 共享(引用计数) | 独占(唯一所有者) | | **拷贝/赋值** | ✅ 允许 | ❌ 禁止(只能移动 `std::move`)| | **性能开销** | 较高(引用计数) | 几乎为零 | | **适用场景** | 多对象共享同一资源 | 单一对象所有权 | --- ### **5. 关键点总结** 1. `<>` 中的类型是智能指针管理的对象类型(如 `path_finder::RRT`)。 2. `shared_ptr` 会自动释放内存,避免手动 `delete`。 3. 优先使用 `std::make_shared<T>()` 而非直接 `new`(更安全高效)。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值