1.第一步是修改hosts
vi /etc/hosts
在127.0.0.1 localhost 后边添加 rpdzkj(自己的ubuntu用户名)
127.0.0.1 localhost rpdzkj
- 设置sources.list,我选择的是中科大的。
sudo mkdir -p /etc/apt/sources.list.d/ && sudo touch /etc/apt/sources.list.d/ros-latest.list
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
3.添加私钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
4.软件库更新
sudo apt-get update && sudo apt-get upgrade
有选择的地方,就一路 Y
若安装过后,出现了 Sub-process /usr/bin/dpkg returned an error code (1)这样的问题,
可以按下面的方法解决:
打开终端,输入
cd /var/lib/dpkg
sudo mv info info.bak #即备份一个info
sudo mkdir info #新建一个新的info目录
sudo apt install -f
就把安装失败的软件自动安装好了。
然后,再运行一次
sudo apt-get update && sudo apt-get upgrade
5.安装ROS kinetic完整版
sudo apt-get install ros-kinetic-desktop-full
有选择的地方,就一路 Y
6.初始化
rosdep init
rosdep update
sudo apt-get install python-pip
sudo apt-get install ros-melodic-desktop-full
sudo rosdep init
rosdep update
但在rosdepc update时,由于要从raw.githubusercontent.com下载文件,这个是国外的网址,需要用代理,否则会出错。也有的说查询IP属地,用IP地址代替,但效果不佳。
reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml)
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
Failed to download target platform data for gbpdistro:
<urlopen error [Errno 111] Connection refused>
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
ERROR: error loading sources list:
<urlopen error <urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml)>
其实,最好的办法,是从https://codeload.github.com/ros/rosdistro/zip/refs/heads/master,把整个文件都下载下来,然后解压后,通过USB口,将文件全部拷贝到/home/rpdzkj/Downloads/rosdistro/***下,然后修改在/etc/ros/rosdep/source.list.d/下的20-default.list文件, 按如下操作:
cd /etc/ros/rosdep/sources.list.d/
rm 20-default.list //删除原有的文件,如没有可以直接跳过此步
sudo touch 20-default.list
这样,就在/etc/ros/rosdep/source.list.d/中建立文件20-default.list,然后把下面的代码拷贝进来。
一定要注销掉原来的带有raw.githubusercontent.com的这些语句:
yaml https://raw.githubusercontent.com/*********
# 首先是特定于操作系统的列表
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
yaml file:///home/rpdzkj/Downloads/rosdistro/rosdep/osx-homebrew.yaml osx
# 通用的
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml file:///home/rpdzkj/Downloads/rosdistro/rosdep/base.yaml
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
yaml file:///home/rpdzkj/Downloads/rosdistro/rosdep/python.yaml
yaml file:///home/rpdzkj/Downloads/rosdistro/rosdep/ruby.yaml
#gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
gbpdistro file:///home/rpdzkj/Downloads/rosdistro/releases/fuerte.yaml fuerte
# 更新的发行版(Groovy、Hydro、...)不得再列出,而是从 rosdistro index.yaml 中获取
下面三个文件中也要修改,修改方式同上,查看你的python2.7
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/init.py
对于index-v4.yaml的错误,按下面的方法修改:
sudo vim /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
找到这一行,
'DEFAULT_INDEX_URL ='https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
修改为:
#'DEFAULT_INDEX_URL ='https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
'DEFAULT_INDEX_URL ='file:/home/rpdzkj/Downloads/rosdistro/index-v4.yaml'
对于fuerte.yaml的错误,按下面的方法修改:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
# FUERTE_GBPDISTRO_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml'
FUERTE_GBPDISTRO_URL = 'file://home/rpdzkj/Downloads/rosdistro//releases/fuerte.yaml'
```
对于targets.yaml的错误,按下面的方法修改:
```c
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
# REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:/home/rpdzkj/Downloads/rosdistro/releases/targets.yaml'
rosdep update
可以了。
7 为了每次打开新的终端时可以自动配置好 ros 相关环境,需要将ROS环境变量添加到.bashrc文件中。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
8.安装rosinstall等工具
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
若在这个过程中,出现了 Sub-process /usr/bin/dpkg returned an error code (1)这样的问题,仍按下面的方法解决:
打开终端,输入
cd /var/lib/dpkg
sudo mv info info.bak #即备份一个info
sudo mkdir info #新建一个新的info目录
sudo apt install -f
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
9.验证ROS是否安装成功,每条命令都需要新开一个终端
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key