docker作为一种开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。之前网上存在一些使用docker去安装ros的相关教程。但是目前网上的教程都无法装载GAZEBO RVIZ等常用的一些软件。

在做纯编译开发时,我们不需要对CPP/Python代码进行编译,这时候能够一键安装环境的Docker就显得十分有必要,这样的方式不会考虑环境配置的差异,而且能够快速的搭建好环境。

基于docker一键安装ros环境(gazebo&rviz)_Parse

创建python文件来运行程序

build

import argparse
import docker_utils as ut
import os

def main():
# Parse arguments
parser = argparse.ArgumentParser()
parser.add_argument('-g', '--gazebo', dest="gazebo_version", default="9")
parser.add_argument('-r1', '--ros1', dest="ros1_version", default="melodic")
parser.add_argument('-r2', '--ros2', dest="ros2_version", default="")
args = parser.parse_args()

gz_version_tag = '9'
# If ROS 2 is not defined, ROS 1 is compiled
if args.ros2_version == "":
# Compile ROS 1
ros_version_name = 'ros1'
ros_version_tag = args.ros1_version
gz_version_tag = args.gazebo_version
else:
# Compile ROS 2
ros_version_name = 'ros2'
ros_version_tag = args.ros2_version
if not (args.gazebo_version == "9"):
print("Gazebo 9 is only supported. Using this version by default.")

# Select image to compile
image_name = '{}'.format(ros_version_name)

# Build selected image
command = 'cd {} && ROS_VERSION={} GZ_VERSION={} make {}'.format(
ut.get_repo_root(), ros_version_tag, gz_version_tag, image_name)
ut.run_command(command)

if __name__ == '__main__':
main()

该文件是我们启动安装的入口,在输入./build后则执行到安装ros的指令中。
ros1/Dockfile