项目过程记录

ROS基础知识

修改传递参数

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

ros::NodeHandle

ros::param

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

ros::get_param

查看节点信息

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

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

修改launch文件节点

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
    
	<param name="kernelSize" value="3"/>
</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二进制文件进行替换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值