环境
笔者安装的是Ubuntu18.04.4,对应的ROS版本是 Melodic
前期准备
更换软件镜像源:打开【软件和更新】,第一个标签项【Ubuntu软件】
ps:第三个选项updates中的每日日更新打开,不然后面安装时会出现错误
安装步骤
- 添加ROS软件源
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'
- 设置最新的密钥:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3. 安装ROS
sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
出现以下错误:
是因为未开启更新,在Ubuntu软件仓库的update中开启。之后重新安装
sudo apt-get install ros-melodic-rqt*
- 初始化rosdep
sudo rosdep init
如果出现:sudo rosdep:找不到命令提示,这里需要执行如下命令
sudo apt install python-rosdep
执行完sudo rosdep init后出现
则需要
cd /etc
sudo gedit hosts
在文件末尾加上
151.101.84.133 raw.githubusercontent.com
保存关闭重新执行sudo rosdep init
再次执行sudo rosdep init
,出现如下即为成功
- rosdep update更新
rosdep update
这里基本报的错都是网络超时,可能会在下面五个文件任何一个的下载中提示handshake timeout
。
sudo rosdep init
和rosdep update
运行不了的根本原因是"raw.githubusercontent.com"
这个网站不好使。
"raw.githubusercontent.com"
实际上是Google GitHub的用户服务器,sudo rosdep init
和rosdep update
都是从该网站上下载一些文件,在初次安装ROS的时候一般国内网是进不去的。
sudo rosdep init
做的事情其实就是下载了一个20-default.list
文件到 /etc/ros/rosdep/sources.list.d
文件夹下
rosdep update
做的事情就是根据20-default.list
文件中的网址链接去下载相应的文件。
用到了五个文件:osx-homebrew.yawl
,base.yawl
,python.yawl
,ruby.yawl
,fuerte.yawl
,地址都在"raw.githubusercontent.com"
下面,因为网络进不去所以下载不下来,rosdep update
就运行不了。
raw.githubusercontent.com
实际上就是github的用户数据服务器,rosdep
程序下载的就是github.com/ros/rosdistro
这个repository
里的文件。
可以手动下载解决该问题,即下载软件包,采用本地模式安装。下载的文件名为rosdistro-master.zip,前面说的那些文件都在里面。
首先将这个文件解压,例如放在/etc/ros
下
将文件夹拷贝至/etc/ros
时发现无法粘贴,需要提高权限
sudo chmod 777 /etc/ros
首先修改20-default.list
,执行:
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
将里面链接到"raw.githubusercontent.com"
的内容全部替换为链接到本地文件,最后20-default.list
的内容是这样的
然后修改下面三个文件,同样将其中链接到"raw.githubusercontent.com"
的内容全部替换为链接到本地文件。可以使用Ctrl+F 查找 raw.githubusercontent.com
,每个文件中都有一处需要修改。
1. /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py2. /usr/lib/python2.7/dist-packages/rosdep2/rep3.py3. /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
修改gbpdistro_support.py
,执行:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
然后弹出文本编辑器
定位到raw.githubusercontent.com
这一行(使用Ctrl+F 查找),注释掉原来的链接改为本地文件,修改的内容如下面所示:
修改rep3.py
,执行:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
同样定位到raw.githubusercontent.com
这一行(使用Ctrl+F 查找),注释掉原来的链接改为本地文件,修改的内容如下面所示:
修改__init__.py
,执行:
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
再次执行rosdep update
9. 设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
- 安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
安装完成后在 其他位置/电脑/opt/ros/melodic
路径下会看到
11.验证是否安装成功
打开三个终端,分别输入
1. roscore
2. rosrun turtlesim turtlesim_node
3. rosrun turtlesim turtle_teleop_key
在输入rosrun turtlesim turtlesim_node
时可能出现
Command 'rosrun' not found, but can be installed with:sudo apt install rosbash
根据提示输入命令即可
sudo apt install rosbash
然后出现package 'turtlesim' not found
sudo apt-get install ros-melodic-ros-tutorials
此时输入sudo apt-get install ros-melodic-ros-tutorials
即可成功
在第三个终端,按键盘上的上下左右箭头,控制小海龟移动
ps:ROS是依赖python2.7的千万不要卸载python2.7