ROS踩坑记录

  • Post author:
  • Post category:其他




问题:ubuntu 没有 /dev/ttyUSB0

1、跟换数据线,有些数据线是仅充电的,没有数据传输功能

2、没有CH340或CP2102驱动。

CH340驱动下载:http://www.wch.cn/download/CH341SER_LINUX_ZIP.html

CP2102驱动下载:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

在这里插入图片描述
在这里插入图片描述



问题:运行 launch 文件或 ROS 节点时出现 exit code -9 错误提示

exit code -9含义:

错误码为linux系统的错误码,并非ros系统的,-9含义为memory使用相关的错误。

使用

htop

命令检测运行 roslaunch 时的内容占用情况,监测内存状态,如果内存爆满,那就是内存不够而造成的

解决:可以扩大swap虚拟内存。参考教程:点

这里



问题:windows使用vscode远程连接(ssh)ubuntu时出现 “过程试图写入的管道不存在”或者出现“Bad owner or permissions on C:\Users\ASUS/.ssh/config”

解决:把

C:\Users\ASUS\.ssh

路径下的

config

文件删掉,然后在vscode重新ssh,这个时候会自动重新创建

config

文件。

如果还是不能ssh,或者弹出

operation not permitted

错误提示,就

右键config文件->属性->安全

,查看当前用户是否有权限,如下图:

在这里插入图片描述

如果没有,点击

编辑->添加

,把你的用户名称添加进去,然后确定,如下图:

在这里插入图片描述
添加完成后,把权限全部勾选:

在这里插入图片描述

然后确定就可以了。



问题:AMCL 过程中出现 Request for map failed; trying again…

这是因为AMCL需要订阅map话题,尽管你通过

rostopic list

看到map话题已经被发布,也会弹出这个错误。

解决:使用map_saver保存地图文件(保存的这个地图可以是通过gmapping建立的),并使用map_server导入地图,就可以解决这个错误了。



问题:AMCL 过程中,在rviz里粒子分布(即那些红色箭头)没有显示

可能是map话题订阅失败(即上一问题),需要启动map_server节点导入地图才可以看到粒子分布。



问题:车身静止时,rviz中显示的机器人模型在几个定点位置上快速闪动,但odom坐标系一直不变

因为gmapping节点与AMCL节点都可以对机器人进行定位,如果同时运行了gmapping节点与AMCL定位节点的话,出现这种情况是由于tf坐标变换冲突导致的。因为gmapping节点会发布map->odom的tf坐标变换,而AMCL节点都会发布odom->map的tf坐标变换,所以在rviz中的机器人模型会一直变化。

解决方法:建图时只使用gmapping节点,地图构建完毕后通过map_saver节点保存地图。而在导航时,通过map_server节点导入地图,仅使用AMCL节点进行定位。



问题:出现警告 MessageFilter

[ WARN] [1444300130.237434289]: MessageFilter [target=odom ]: Dropped 100.00% of messages so far. Please turn the [ros.gmapping.message_notifier] rosconsole logger to DEBUG for more information.

出现了MessageFilter警告,如下图所示:

在这里插入图片描述
警告提示:有100条消息被隐藏了,并引导我们要到rosconsole logger处查看详细的DEBUG信息。

所以我们运行下面命令:

rosrun rqt_logger_level rqt_logger_level 

改为Debug,如下图:

在这里插入图片描述
看回到终端,详细信息显示出来了,如下图:

[DEBUG] [1444300178.106273471]: MessageFilter [target=odom ]: Added message in frame laser at time 1444300192.911, count now 5
[DEBUG] [1444300178.210528915]: MessageFilter [target=odom ]: Removed oldest message because buffer is full, count now 5 (frame_id=laser, stamp=1444300192.508830)

在这里插入图片描述
大概意思就是,在launch文件中提及到了frame_id为laser的语句,但是laser的坐标变换不存在。

这个时候在rviz中,如果TF->tree处确实没有laser的话,或者laser没有跟其他坐标建立联系的,那就说明你的确缺了laser的TF坐标变换,添加上即可。

但是,如果在坐标树中显示有laser并且TF坐标变换正常的话(如下图),那可能是节点运行顺序的问题。比如说,在gmapping节点中,需要odom坐标系,所以一定要在gmapping节点运行之前建立好odom坐标系并且进行正确的TF变化,否则有可能就会报错。

在这里插入图片描述



问题:ubuntu 卡死

解决:安全重启

首先,无论Ubuntu出现什么状况,千万不要强制重启,可以尝试以下步骤进行安全重启。

  1. 同时按住 Ctrl 和 Alt 键,按住不要放

  2. 按一下 SysRq 键(有的键盘是PrtSc,也有的是PS)

  3. 依次按下 R, E, I , S , U , B 键

这些步骤做完后,系统就会安全重启。



版权声明:本文为weixin_44415639原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。