真实机器人的RRT自主探索建图

在ros当中使用rrt_exploration来实现自主建图,官方文档(http://wiki.ros.org/rrt_exploration)说得比较清楚,这篇博客简单地讲解一下流程,主要是针对一些容易掉进坑的地方说明一下,给大家排排雷。
安装rrt_exploration功能包请参考上面的官方说明。

本人在树莓派3b+平台(ubantu16.04+kinetic)测试过rrt自主建图,没有问题。附上实验图:在这里插入图片描述
因为我是单机实验,直接使用的是rrt_exploration功能包里面的simple.launch文件,另外还要再自己建立一个文件,这个文件需要包含move_base、gmapping(或者其他建图功能包)。总的来说,需要启动的有move_base、建图、rrt三者。

需要注意的坑点有以下:
1、当你是单机实验的时候,需要注意所有的frame和topic保持统一的格式。例如base_frame=“base_footprint"而不是”/base_footprint",topic前需要加‘/’。所有涉及到tf转换的地方,都需要注意你的frame有没有前缀‘/’。
2、下载的rrt功能包有的文件里头部分的frame有前缀,这个需要与你自身的情况保持一直,自己做修改。可以参考该大神 的文章:https://blog.csdn.net/qq_42145185/article/details/82461072
3、当你需要改变路径规划算法时,需要你的move_base启动包与function.py里面的plan_service的make_plan服务保持一致。
4、需要注意在intel处理器上,char默认有符号,但是在arm处理器上,char默认无符号,可参考:http://blog.sina.com.cn/s/blog_6cf921f30102vd34.html
在这里插入图片描述

作者的一个函数obstacleFree返回了一个char,在这里插入图片描述
之后利用这个char的值来判断是空、边界还是障碍物。这个放在PC上的仿真是没问题的,但是如果在真实机器人上,比如树莓派上,他们使用的处理器是arm架构,char就是一个无符号值,此时永远不会有checking==-1的情况,所有checking==-1都是溢出变成255,也就永远检查不到边界。
这时你可以把检查checking==-1的情况改成checking==255。但更加建议您把char改成其他有符号的类型,如int。

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
移动机器人项目组任务安排表 Day 01 上午 1.gmapping参数配置(李超) 2.总体launch文件的编写(钟浩) 3.机器人tf,状态,滤波器launch文件的编写(李博) 4.移动机器人调试(李超,钟浩,李博) 5.完成gmapping建图修图(李超,钟浩,李博) 下午 1.move_base参数配置(李超,钟浩) 2.amcl参数配置(李博) 3.调试机器人导航参数(李超,钟浩,李博) 4.在rviz中完成机器人单点导航(李超,钟浩) 5.记录多个导航目标点(李超,钟浩) 6.查阅随机循环导航函数的资料(李博) 7.完成随机循环导航功能节点函数(李超,钟浩,李博) 8.完成随机循环导航功能测试(李超,钟浩,李博) 里程碑事件: 1.完成gmapping建图修图 2.调试机器人导航参数 3.完成随机循环导航功能测试 Day 02 上午 1.完成循环导航代码的编写(李超,钟浩,李博) 2.调试循环导航功能(李超,钟浩,李博) 下午 1.完成自主探索建图代码的编写(李超,钟浩,李博) 2.调试自主探索功能(李超,钟浩,李博) 3.优化自主探索功能代码(李超,钟浩,李博) Day 03 上午 1.完成初始化位姿功能 2.完成里程计清零功能 下午 1.完成可设置循环次数导航功能 2.调试初始化位姿,里程计清零,循环导航功能 Day 04 上午 1.完成单点设定导航插件 下午 1.完善单点设定导航插件 2.调试单点设定导航插件功能 Day 05 上午 1.完成多导航点记录插件 2.完成多点循环导航节点 下午 1.完成多点循环导航插件 2.调试多点循环导航插件功能 Day 06 上午 1.查找关于巡墙算法的解决方案 2.完成rrt_exploration(快速随机搜索树)的下载和demo测试 下午 1.修改rrt_exploration接口 Day 07 上午 1.修改rrt_exploration接口 下午 1.修改rrt_exploration接口 Day 08 上午 1.在仿真机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 下午 1.在真实机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 Day 09 上午 1.分别完成导航和自主建图的move_base参数的配置 下午 1.完成rviz中marker标记 Day 10 上午 1.将marker功能添加到真实机器人上,并完成各项参数优化。 下午 1.完成代码整理,说明文档撰写。
RRT(Rapidly-exploring Random Trees)自主建图的原理是通过随机采样和搜索树的扩展来实现。首先,根据给定的未知环境,在全局范围内随机采样一些点作为候选目标点。然后,使用随机采样的点构建一棵搜索树,其中每个节点都代表一个机器人的位置。通过不断扩展树的分支,从当前位置向目标点搜索,直到达到目标点或无法再扩展为止。这样,搜索树会覆盖整个未知环境,并提供一条从起始位置到目标点的路径。 在RRT自主建图中,通常使用两个阶段的搜索:全局探索和局部修正。全局探索阶段使用全局RRT算法,从起始位置开始,通过随机采样和扩展搜索树,直到找到一个接近目标点的路径。这个路径通常是一条较长的路径,可能会经过一些障碍物。 在局部修正阶段,使用局部RRT算法从全局路径的每个节点开始,以该节点为起点继续搜索,直到达到目标点或无法再扩展为止。这个阶段的目的是修正全局路径,使其更加贴近障碍物,并生成一条更精确的路径。 在RRT自主建图中,还需要使用一些过滤器和规划器来处理搜索树的路径,并将其转化为机器人的实际移动。例如,可以使用过滤器来将路径中的冗余节点进行过滤,减少路径的复杂性。然后,使用导航规划器将路径转化为机器人的移动指令,使机器人能够按照路径进行导航。 总结起来,RRT自主建图的原理是通过随机采样和搜索树的扩展,在全局和局部范围内搜索未知环境,并生成一条从起始位置到目标点的路径,然后使用过滤器和规划器将路径转化为机器人的实际移动。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用rrt(快速搜索随机树)算法实现机器人自主巡墙建图](https://blog.csdn.net/dzhongjie/article/details/82464002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值