ROS编译和运行问题

运行时节点出现报错

1
2
user@user:~/nav$ rosrun test test_node
/opt/ros/noetic/bin/rosrun: line 150: /home/isward/isward_ii_ws/devel/lib/test/test_node: Success

roscore报错

安装完ROS后,运行roscore报错

1
Traceback (most recent call last): File "/opt/ros/groovy/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/groovy/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'

注意rosdep update不要用sudo,解决方法:sudo rosdep fix-permissions,然后rosdep update

roscore报错 2

在一堆报错的最后是:

1
InvalidURL: URL can't contain control characters. '192.168.1.35 ' (found at least ' ')

看上去是IP最后多了个空格,改了MASTER_URI不起作用,最后发现问题是ROS_IPROS_HOME,不要再写成hostname -I,写成192.168.1.35

roscore报错 3

roscore启动失败
原因是因为ROS1支持的是Python2.7,而我之前将Ubuntu自带的Python升级到了3.8,也就是默认版本改变了,所以导致了相关的错误。 解决方法
改回来之后,有些程序可能还是需要python3.8,这时运行python3.8 file.py,可能会报错no module named rospkgno module named pydot,所以需要pip install rospkg pydot

rosbash出错

rosbash出错
source setup.bash出现的错误,发现我用的是zsh,换了之后正常

Network communication failed

执行ROS命令结果报错 Network communication failed

这可能是当前用户没有这个权限,切换到root再试试

rosdep init 报警

rosdep init
这是因为之前运行过了,可以无视这个问题

[rosrun] Couldn’t find executable named ……

rosrun出错


环境变量没设置好,应当是IP和端口组合

编译出错


对用到的某个文件没有给权限,找到执行chmod 755即可

rosnode list无结果

roscorerosrun可以正常运行,但是rosnode list只有rosoutrostopic list没有任何话题。无法用命令对节点和话题操作,可能是通信问题。原因不明,重启电脑后正常。

编译rviz出错


没有安装yaml-cpp或者版本不对,因为rviz读取PersistentSettings文件时需要这个库,下载0.5.1版本的yaml,把之前安装的yaml删掉,重新编译安装。编译生成的几个文件在/usr/local/lib/usr/local/include,如果找不全,就先用现在的版本再编译一遍就知道了

Lost sync with device, restarting


启动bringup.launch,偶尔会出现这个错误,这是下位机和ROS通讯失败造成的,报错在rosserial,很少发生

rqt报错


后来明白,原因是发布坐标系的节点在ubuntu 20.04,rqt在ubuntu 18

rqt_tf_tree运行失败

运行rqt_tf_tree,会出现 wait_for_service(/rqt_gui_py_node/tf2_frames), failed to contact ,will keep trying rqt_tf_tree一直打不开。

原因是IP变动的问题,重新设置IP地址,最好主机与从机都设置为静态ip。

Rviz启动失败

一次没操作好,导致Rviz报错

这个文件是存在的,和其他电脑上正常的Rviz对应的文件路径相同。一直查不到原因,在网上查来查去,反复查ogre这个库是不是装的出问题了,还以为是OpenGL版本变高了,其实这是显卡决定的。最后终于发现链接的librviz.so不是官方路径的,而是我自己工作空间的。可以先用官方的替换

执行任何ROS命令报一堆错

image.png
硬盘空间耗尽

编译报错

1
The build space at '/home/user/catkin_ws/build' was previously built by ''. Please remove the build space or pick a different build space.

原因是硬盘空间耗尽

Unable to communicate with master

执行任何ROS命令都会报错 Unable to communicate with master

已经运行了ROS节点,结果发现什么ROS命令都会报这个错,后来终于发现,启动节点的环境变量是一套,后来改了,ROS命令都报这个错误。注意ROS_IP如果使用名称而不是数字,必须是/etc/hosts里定义的。

Rviz一个关于时间戳的报错,不必理会 Detected jump back in time of 0.223145s. Clearing TF buffer.