项目过程记录

项目过程记录,第1张

项目过程记录

目录
  • ROS基础知识
    • 修改传递参数
    • 查看节点信息
    • 修改launch文件节点
  • Gmapping
  • rrt
    • 节点修改
    • 环境问题

ROS基础知识 修改传递参数

在 C++ 中实现参数服务器数据的增删改查,可以通过两套 API 实现:

ros::NodeHandle

ros::param

在 Python 中实现参数服务器数据的增删改查

ros::get_param

查看节点信息

在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:

rosnode : *** 作节点
rostopic : *** 作话题
rosservice : *** 作服务
rosmsg : *** 作msg消息
rossrv : *** 作srv消息
rosparam : *** 作参数

修改launch文件节点

    
    
    
    
	

node —> 包含的某个节点

pkg -----> 功能包

type ----> 被运行的节点文件

name --> 为节点命名

output-> 设置日志的输出目标

name=“命名空间/参数名”

参数名称,可以包含命名空间

value=“xxx” (可选)

定义参数值,如果此处省略,必须指定外部文件作为参数源

Gmapping

选用Gmapping算法构建地图,传入rrt算法中。

修改launch文件
可能需要修改的参数如下

~maxUrange (float, default: 80.0),探测最大可用范围,即光束能到达的范围。
~minimumScore (float, default: 0.0),为获得好的扫描匹配输出结果,用于避免在大空间范围使用有限距离的激光扫描仪(如5m)出现的jumping pose estimates问题。 当 Scores高达600+,如果出现了该问题可以考虑设定值50。
~temporalUpdate (float, default: -1.0),如果最新扫描处理比更新慢,则处理1次扫描。该值为负数时候关闭基于时间的更新。
particles (int, default: 30) gmapping算法中的粒子数,因为gmapping使用的是粒子滤波算法,粒子在不断地迭代更新,所以选取一个合适的粒子数可以让算法在保证比较准确的同时有较高的速度。
minimumScore (float, default: 0.0) 最小匹配得分,这个参数很重要,它决定了对激光的一个置信度,越高说明对激光匹配算法的要求越高,激光的匹配也越容易失败而转去使用里程计数据,而设的太低又会使地图中出现大量噪声,所以需要权衡调整。

修改后直接运行launch文件即可
话题和服务如下

运行后可以保存地图

rosrun map_server map_saver -f map

生成map.pgm map.yaml两个文件,其中map.yaml文件内容如下:

image: map.pgm                               #图像文件名字
resolution: 0.050000                         #图像分辨率
origin: [-13.800000, -1.000000, 0.000000]    #机器人在开始建图时在地图图片上的姿态
negate: 0                                    #对立面
occupied_thresh: 0.65                        #被占据的临界值
free_thresh: 0.196                           #自由状态的临界值
rrt

使用ros的rrt官方包,需要修改节点与自己的设备实现匹配,安装依赖环境。
分为仿真包和实物包
下载链接如下
rrt_exploration
rrt_exploration_tutorials

节点修改

需要修改的文件有
single.launch
src中的
global_rrt_detector.cpp
local_rrt_detector.cpp
scripts中的
assigner.py
functions.py
filter.py

修改节点时,去除所有的ns+和robot1/
self.name+以及name+
同时去除调用move_base base_link时的前缀
自身只有一个设备没有前缀名。

由于自身设备的move_base参数设置问题,可能导致运行效果较差。
所以采用仿真包中的move_base文件替换
运行launch文件即可

环境问题

编译是需要打开文件包中的python文件的可编译权限

tf2是基于python2进行编写的
所以编译时可能由于版本冲突出现问题
解放方法一般为切换当前python版本
但是本人实 *** 并不好使
最终解决是删除了python二进制文件
使用python2.7二进制文件进行替换。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5658703.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存