栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

项目过程记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目过程记录

目录
  • 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二进制文件进行替换。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号