在Ubuntu20.04上安装ROS-noetic
大体上都是按照ROS wiki上的操作来的
http://wiki.ros.org/cn/noetic/Installation/Ubuntu
安装完之后执行小乌龟命令来判断是否安装成功
roscore
rosrun turtlesim turtlesim_node
执行安装命令时报错
sudo apt-get install ros-noetic-desktop-full
错误内容提示
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken ...
我使用aptitude命令来修复依赖
sudo aptitude install ros-noetic-desktop-full
系统自己给出了安装方案,以为能很容易修复,结果再次报错
由于出现了太多错误,处理过程被中止了
暂时不知道是什么原因,做了一次不求甚解的人,从网上找了一个解决方案,很好用
第一步:备份
$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk
第二步:新建
$ sudo mkdir /var/lib/dpkg/info
第三步:更新
$ sudo apt-get update
$ sudo apt-get -f install
第四步:替换
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk
//把更新的文件替换到备份文件夹
第五步:删除
$ sudo rm -rf /var/lib/dpkg/info
//把自己新建的info文件夹删掉
第六步:还原
$ sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info
//把备份的info.bk还原
而后重新执行命令
sudo aptitude install ros-noetic-desktop-full
成功安装
安装ros成功后,执行命令roscore
后失败,报错内容
Traceback (most recent call last):
File "/opt/ros/noetic/bin/roscore", line 37, in
from roslaunch.nodeprocess import DEFAULT_TIMEOUT_SIGINT, DEFAULT_TIMEOUT_SIGTERM
File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/__init__.py", line 62, in
from .scriptapi import ROSLaunch
File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/scriptapi.py", line 42, in
import roslaunch.parent
File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 54, in
import roslaunch.server
File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/server.py", line 80, in
from rosgraph_msgs.msg import Log
File "/opt/ros/noetic/lib/python3/dist-packages/rosgraph_msgs/msg/__init__.py", line 1, in
from ._Clock import *
File "/opt/ros/noetic/lib/python3/dist-packages/rosgraph_msgs/msg/_Clock.py", line 6, in
import genpy
File "/opt/ros/noetic/lib/python3/dist-packages/genpy/__init__.py", line 34, in
from . message import Message, SerializationError, DeserializationError, MessageException, struct_I
File "/opt/ros/noetic/lib/python3/dist-packages/genpy/message.py", line 64, in
import numpy as np
File "/home/chen/.local/lib/python3.8/site-packages/numpy/__init__.py", line 108, in
from ._globals import (
ValueError: source code string cannot contain null bytes
这个错误很奇怪,我注意到报错内容的最后一行提示在路径/home/chen
下竟然有一个.local
文件夹
我的解决方案是,备份了这个隐藏文件夹,然后删除了隐藏文件夹
cp -r /home/chen/.local /home/chen/local_bak
sudo rm -rf /home/chen/.local
之后,执行命令roscore
,可以成功
很奇怪的是,删除了.local后,我的Ubuntu微信图标(绿色的)没了,变成了一个像设置按钮一样的默认白图标。
这时我仿佛知道了刚才roscore失败的原因,有可能是微信的某个中文设置导致了失败。
我这时进行了很多操作:重启、重装微信、并且不停的执行roscore来判断是否有误
奇怪的是,乱七八糟执行一通后,.local文件夹还保留的情况下,roscore也不执行失败了。真的不知道为啥了。。。暂时就这样把。