原因及方案:
1.雷达放的太低,小车后面的屏幕遮挡住了雷达视线,误认为小车身处障碍物中,升高雷 达 使其不被挡住
2.实验场地太小,局部代价地图尺寸太大,周围的人,让它以为小车被障碍物包围,所以不定打转,换个大点的空旷的实验场地,同时把局部代价地图的尺寸调小
问 题2:
[ERROR] [1630928351.568545312]: None of the 21 first of 21 (21) points of the global plan were in the local costmap and free
[ERROR] [1630928351.568712400]: None of the points of the global plan were in the local costmap, global plan points too far from robot
解决方案:
local_costmap_params.yaml 文件中,局部地图宽度至少为0.5m才不会报错
问 题3:
解决 问题1 的基础上, 小车终于跑起来,但是还是不按规划的路径跑,而是往相反的方向跑,而且不会停止,也不会避障
原因及方案:
参考古月居 《ROS机器人开发实践》中 机器人SLAM自主助导航 部分 ,不构建地图,而是直接导入
JESON NANO 总是无缘无故黑屏重启,而切无法进入ubuntu桌面 或者总是停在LOGO界面,
是烧录系统的TF卡松动,重新插拔即可
amcl不起作用,雷达点云无法显示,rviz中设置初始位置的2D无效
No laser scan received (and thus no pose updates have been published) for 34139472.000000 seconds. Verify that data is being published on the /scan topic.
查看tf树,发现没有base_link 到 laser 的tf坐标变换,在设置坐标系的launch文件中加上
<!-- 设置一个 baselink与 laser之间的静态坐标变换 -->
<
node pkg
="
tf"
type
="
static_transform_publisher
"
name
="
base_to_laser_broadcaster
"
args
="
0 0 0 0 0 0 /base_link /laser 100
"/>
rviz中的模型小车来回跳动,设置初始位姿,也是来会跳动,
发生tf冲突,
<!-- 设置一个/odom与/map之间的静态坐标变换 -->
<node pkg="tf" type="static_transform_publisher" name="map_odom_broadcaster" args="0 0 0 0 0 0 /map /odom 100" />
<!-- 设置一个 baselink与 laser之间的静态坐标变换 -->
<
node pkg
="
tf"
type
="
static_transform_publisher
"
name
="
base_to_laser_broadcaster
"
args
="
0 0 0 0 0 0 /base_link /laser 100
"/>
把map_odom_broadcaster 的注释调,二选一,这样小车就不再乱跳
出现如图所示警告:
上图所示:控制频率太高了,要降低频率, 解决方法如下图所示:
如图所示,地图花了 而且扫面出来的点云 跟着小车乱跑
方法: 1.把amcl.launch文件中use_map_topic 由false 改成 true
2.把 配置文件local_costmap_param.yaml中的global_frame改回odom
雷达tf坐标系方向反了,导致如下图所示:
上图中雷达点云和实际导入的地图反了,tf坐标的红色轴,代表x轴的正方向,黑色阴影为小车正前方的箱子,正常情况下,X轴正方向应该对着黑色的阴影,相差180度,只要把雷达坐标系tf,绕着z轴旋转180度即可,本人nav09_demo.launch文件中,修改laser到底盘的坐标变换,
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.0 0.0 0.0 3.14 0.0 0.0 /base_link /lidar 100" />
把上述第四个数字,改成3.14 ,因为180度对应的弧度是3.1415925,参数具体含义如下图
注意:在vscode软件中更改,需要保存(cpp等文件代码更改,要编译才能生效,launch文件中修改时,只需保存即可) 改完,保存之后 打开RVIZ查看tf的情况,是否绕着Z轴旋转了180度 ,tf只留,base_link和laser即可,然后查看
地图中白色方框所在的,是小车位置,(远程无法显示小车模型,有些问题) 黑色阴影是小车正前方的,雷达点云也和地图基本匹配! 下方有个小点,是放电脑的位置
问 题1:
[ WARN] [1630552558.739541370]: global_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters
解决方案:
问 题2:
[ WARN] [1630552559.863283514]: local_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters
解决方案:
问 题3:
[ WARN] [1630630722.985943190]: Shutdown request received.
[ WARN] [1630630723.051932412]: Reason given for shutdown: [[/robot_state_publisher] Reason: new node registered with same name]
解决方案:
问 题4:
[ WARN] [1630630728.680599740]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist. canTransform: source_frame base_footprint does not exist.. canTransform returned after 0.100192 timeout was 0.1.
解决方案:
问 题5:
[ INFO] [1630909388.170392503]: lookupTransform base_footprint to laser timed out. Could not transform laser scan into base_frame.
解决方案:
问题1:[ WARN] [1630552558.739541370]: global_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters解决方案:问题2:[ WARN] [1630552559.863283514]: local_costmap: Parameter "plugins" not provided, loading pre-Hydro parame...
之前用
ROS
+激光雷达做小车室内
导航
时,
遇到
个
问题
,就是在RVIZ
中
给定目的地后小车总是会倒退行走,这个行走速度就是base_local_planner_
pa
ram
s.yaml里配置的esc
ap
e_vel逃逸速度,调整了其他参数无用,看看源代码
在trajectory_planner.cpp
中
//and finally, if we can't do anything else, we want
记录一下困扰了好久的
问题
在RVIZ
中
点一个地方 小车就不停的打转 哪里也不走
首先是用
ROS
TOPIC echo /cmd_vel 查看twist消息的发布,发现x的数值始终维持在0.1左右,突然想到是不是因为被限制了速度 所以每次只能直线跑一点点所以看起来一直在转弯
点开 move_base的config文件
controller_frequency: 0.5 发现控制频率特别低...
机器人
自主
导航
流程
机器人
躲避障碍物,偏离最优路径,由本地规划器完成。本地规划器实时规划避障路径,还会努力让
机器人
沿着全局路径运动,也就是规划
机器人
每时每刻的运动速度,速度通过cmd_vel发送给底盘,底盘
中
的驱动就会控制
机器人
的电机按照某一速度运动,从而带动
机器人
向目标前进。
白色表示在
导航
里面这个模块是必须的(
ros
提供的,可以直接用),灰色用不用都行(需要可以直接调用),蓝色需要重点关注(硬件相关的驱动和控制需要自己实现)
全局规划器负责规划从起点到终点的最优路径,本地规划器尽量让
机器人
沿着最优路
在Github
中
找到了rrt自主探索的相关源码,但是自己的
ROS
是melodic版本的,而代码是Kinetic上跑的,所以编译
遇到
了一堆
问题
,也没解决,索性就删掉了不能编译的包,并打算参照源码编写turtlebot3模型的程序,按理说非常简单的事情,但是出现了TF树连接不上的
问题
。
rrt_exploration_tutorials这个包分为三种launch文件,分别为simple、single、mutl,区别就是simple没有加作用域,single的作用域为robot_...
1.local_co
stm
ap
或者
global
_co
stm
ap
: Pre-
Hydro
parameter
“static_m
ap
” unused since “
plugins
” is
pro
v
ide
d
在move_base包
中
找到local_co
stm
ap
_
pa
ram
s.yaml和
global
_co
stm
ap
_
pa
ram
s.yaml文件打开
删掉“static_m
ap
:false”这一行
2.local_co
stm
ap
和
global
_co
stm
ap
: Pre-
Hydro
parameter
“m
ap
_ty
teb_local_planner [WARN]
// An highlighted block
[ WARN] [1642574748.113965461]:
global
_co
stm
ap
: Pre-
Hydro
parameter
"static_m
ap
" unused since "
plugins
" is
pro
v
ide
d
[ WARN] [1642574748.115083447]:
global
_co
stm
ap
: Pre-
Hydro
parameter
"m
ap
_type" unused since
此软件包提供2D成本图的实现,该实现从世界各地接收传感器数据,构建数据的2D或3D占用网格(取决于是否使用基于体素的实现),并基于占用网格和用户指定的膨胀半径在2D成本图
中
膨胀成本。 此软件包还支持基于m
ap
_server的成本图初始化、基于滚动窗口的成本图以及传感器主题的基于参数的订阅和配置。
在上图
中
,红色单元格表示成本图
中
的障碍物,蓝色单元格表示
机器人
内切半径膨胀的障碍物,红色多边形表示
机器人
的足迹。 为了使
机器人
避免碰撞,
机器人
的足迹不能与红细胞相交,
机器人
的
中
心点不能越过蓝细胞。
在
Hydro
版