ROS踩坑记录
-
问题:ubuntu 没有 /dev/ttyUSB0
-
问题:运行 launch 文件或 ROS 节点时出现 exit code -9 错误提示
-
问题:windows使用vscode远程连接(ssh)ubuntu时出现 “过程试图写入的管道不存在”或者出现“Bad owner or permissions on C:\\Users\\ASUS/.ssh/config”
-
问题:AMCL 过程中出现 Request for map failed; trying again…
-
问题:AMCL 过程中,在rviz里粒子分布(即那些红色箭头)没有显示
-
问题:车身静止时,rviz中显示的机器人模型在几个定点位置上快速闪动,但odom坐标系一直不变
-
问题:出现警告 MessageFilter
-
问题:ubuntu 卡死
问题: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出现什么状况,千万不要强制重启,可以尝试以下步骤进行安全重启。
-
同时按住 Ctrl 和 Alt 键,按住不要放
-
按一下 SysRq 键(有的键盘是PrtSc,也有的是PS)
-
依次按下 R, E, I , S , U , B 键
这些步骤做完后,系统就会安全重启。