在项目中可能会遇到 ROS 与 Gazebo 版本特别指定的问题。例如我们当前项目中就要求 ROS 用 Kinetic 版本, Gazebo 用 8.0 版本。在 ROS 的 desktop-full 安装中是附带了 Gazebo 的,但是版本为 7.0。在这种情况下就要采用 ROS , Gazebo 分开安装的方式。
安装 ROS (以 Kinetic 版本为例)
- 进入ROS官网的安装界面:http://wiki.ros.org/ROS/Installation
- 选择需要的版本 Kinetic 和系统平台,我们用的是 ubuntu 16.04
- 按照指导进行安装,这里注意要选择安装 ros-kinetic-desktop 版本,不要选 ros-kinetic-desktop-full,前者不包含 Gazebo ,后者包含了 Gazebo 7。后边安装 Gazebo 8 的时候还需要卸载掉,比较麻烦。
- 安装完 ROS 测试一下,在命令行中输入
roscore
,看能否正常启动 ros master :
安装过程中可能遇到的问题:
sudo rosdep init
和 rosdep update
这两步报错,提示连接超时。这里应该是网络的问题。
网上大概有如下几种解决方法,可以尝试联用,说不定哪一步就可以解决问题了:
- 换网络,例如用手机开热点。
- 在
/etc/hosts
文件中加入raw.githubusercontent.com
对应的 IP 地址,例如在文件末尾加入
这个域名对应的 IP 可能会有变化,可以先在网上(例如 whatismyip)查一下。1185.199.110.133 raw.githubusercontent.com
- 在路径
/usr/lib/python2.7/dist-packages/rosdep2
下的sources_list.py
,gbpdistro_support.py
和rep3.py
文件中将DOWNLOAD_TIMEOUT
值从 15.0 改大一些,例如 1000000.0
如果上述尝试都不行,可以参考这里 https://blog.csdn.net/ysten618/article/details/109641794,使用https://ghproxy.com/ 代理网站下载 github 上相应的文件。
具体操作就是将下述几个文件中的网址加上代理网站前缀:
-
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
第72行改为
第311行加一句DEFAULT_SOURCES_LIST_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20- default.list'
url="https://ghproxy.com/"+url
-
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
第36行改为FUERTE_GBPDISTRO_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/'
-
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
第39行改为REP3_TARGETS_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
-
/usr/lib/python2.7/dist-packages/rosdistro/__init__.py
第68行改为DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
-
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
第68行改为
第119行改为url = 'https://ghproxy.com/https://raw.githubusercontent.com/%s/%s/package.xml'
url = 'https://ghproxy.com/https://raw.githubusercontent.com/%s/%s/%s'
修改以上文件中的网址,然后再运行 sudo rosdep init
和 rosdep update
这两步就可以了。
安装 Gazebo (以 Gazebo 8 为例)
- 进入 Gazebo 官网的安装指导界面:http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install。
- 在右上角选择要安装的版本,这里选择 Version: 8.0.
- 我喜欢用 step by step 的安装方式。按照指示安装即可。
- 测试。在命令行中输入如下命令,看是否启动 Gazebo 窗口:
gazebo
安装 gazebo_ros_pkgs
前边安装的 ROS 与 Gazebo 是完全独立的两部分,要使他们之间互相通讯,还需要安装 gazebo_ros_pkgs 包。
- 进入官网安装界面:http://gazebosim.org/tutorials?tut=ros_installing
- 按照指导安装即可。我一般选择用 A: Install Pre-Built Debians 方式安装。需要注意的是,如果用如下命令安装报错:
sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
则需要指明 Gazebo 版本,将命令改为:
sudo apt-get install ros-kinetic-gazebo8-ros-pkgs ros-kinetic-gazebo8-ros-control
就可以解决问题。
- 测试。安装结束,用如下命令测试:
roscore # 启动 ros master
rosrun gazebo_ros gazebo # 用 rosrun 方式启动 Gazebo
网友评论