• 【Docker】利用Docker构建motion planner运动规划的开发环境


    本文利用Dcoker搭建motion planning开发环境,本开发环境主要适用于深蓝学院高飞老师主讲的motion
    planning课程。搭建过程主要参考:https://blog.csdn.net/PENG__WANG/article/details/123535158和https://github.com/AlexGeControl/Motion-Planning-for-Mobile-Robots

    一、在Native PC上安装ubuntu

    可以参考:双系统安装教程

    二、Docker开发环境

    具体步骤可以参考:Docker安装

    (1)安装Docker

    步骤一:

    • 参考:https://docs.docker.com/engine/install/ubuntu/

    步骤二:

    • 安装完成后, 还需要进行如下操作, 以保证环境的易用性:(请务必执行此操作)将当前用户加入Docker Group。为了能在非sudo模式下使用Docker, 需要将当前用户加入Docker Group。执行命令:
    sudo usermod -aG docker $USER
    
    • 1

    为了使上述变更生效,需要重启。

    (2)安装Docker-Compose

    步骤:https://docs.docker.com/compose/install/

    (3)获取镜像

    # login to my Alibaba Cloud registry -- default password -- shenlansf20210122
    docker login --username=937570601@qq.com registry.cn-shanghai.aliyuncs.com
    # download images, ubuntu 18.04 + ROS melodic + vnc
    docker pull registry.cn-shanghai.aliyuncs.com/shenlanxueyuan/motion-planning-for-mobile-robots:bionic-cpu-vnc
    # TODO: enable ROS noetic
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    (4)启动实例

    git clone https://github.com/AlexGeControl/Motion-Planning-for-Mobile-Robots.git
    
    • 1

    在当前Repo根目录下, 启动Terminal, 执行命令, 启动Docker Workspace:

    docker-compose down && docker-compose up
    
    • 1

    成功启动后, 命令行输出如下 请不要过度在意此处的日志输出,请直接进行下一节的Service Health Check:.

    Docker Compose是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML
    文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 compose步骤有3:
    1、使用Dockerfile定义环境 2、使用docker-compose.yml定义构成应用程序的服务 3、docker-compose
    up启动整个应用程序

    (5)健康检查

    然后打开Chrome浏览器, 访问URLhttp://localhost:49001/, 默认账号/密码为motionplanning/motionplanning, 确保所有服务成功启动.
    在这里插入图片描述

    (6)工作访问空间

    在Chrome浏览器中,访问URL http://localhost:40080/,默认登录密码为motionplanning,访问Docker Workspace
    该工作区可以理解为一个在浏览器中的Ubuntu 18.04 Bionic环境。可以在其中进行一切 Ubuntu 环境下的开发操作。

    (7)文件挂载

    作业需要的源代码与数据,分别是当前的 Repoworkspace/assignments和workspace/data目录下的。Docker Workspace当前Repoworkspace文件夹映射到Docker Instance/workspace目录下。
    当前Repo workspace文件夹可以在中执行如下命令,确保当时–与Docker Workspace–Docker Instance /workspace的一致性

    (8)常见问题

    Docker运行时默认用户为root,运行过程中可能导致当前Repo workspace文件夹的用户和组变更为root,从而使本地文件IO因Permission Denied失败。解决方案:使用chown命令,变更User-Group:

    sudo chown [CURRENT_USER]:[CURRENT GROUP] workspace
    
    • 1

    三、工作区配置

    motion planning的课程作业可以通过本地VSCode开发, Docker内部编译测试的模式,进行开发与编译。

    (1)开发

    Repo中workspace目录,已经映射到Docker的/workspace目录。
    可以使用VS code在宿主计算机上的workspace文件夹喜爱进行源代码开发。

    (2)编译区检验

    cd /workspace/assignments/01-env-setup/ROS
    
    • 1

    在上侧的Shell中, 输入如下命令, 编译catkin_workspace

    # build
    catkin_make
    
    • 1
    • 2

    在下方左侧的Shell中, 输入如下命令, Launch ROS Core

    # set up session:
    source devel/setup.bash
    # launch roscore
    roscore
    
    • 1
    • 2
    • 3
    • 4

    在下方右侧的Shell中, 输入如下命令, Launch RViz

    # set up session:
    source devel/setup.bash
    # launch rviz
    rviz
    
    • 1
    • 2
    • 3
    • 4

    (1) 配置 rviz 插件
    点击“+”,添加 Goal3DTool插件
    点击“-”,删除 2D Nav Goal 和 2D Pose Estimate
    (2)打开rviz的配置文件
    路径为:/workspace/assignments/01-env-setup/ROS/src/grid_path_searcher/launch/rviz_config/demo.rviz
    图片: https://uploader.shimo.im/f/hPU2uJ5koeHzv4Qp.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTYwNTEzNjcsImZpbGVHVUlEIjoibTRrTUx6N3pWSlNuZEJxRCIsImlhdCI6MTY1NjA1MTA2NywidXNlcklkIjo1Mjg5MzE0OH0.4rsbP6oMXrEj-u3-f8TahYtxcCnGn-qFRcjso_D8p9g

    然后运行lanuch文件

    # set up session:
    source devel/setup.bash
    # launch demo view:
    roslaunch grid_path_searcher demo.launch  
    
    • 1
    • 2
    • 3
    • 4

    图片: https://uploader.shimo.im/f/L3b09fp8dRgTdFrp.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTYwNTEzNjcsImZpbGVHVUlEIjoibTRrTUx6N3pWSlNuZEJxRCIsImlhdCI6MTY1NjA1MTA2NywidXNlcklkIjo1Mjg5MzE0OH0.4rsbP6oMXrEj-u3-f8TahYtxcCnGn-qFRcjso_D8p9g

    看到如下地图,即证明环境配置成功。

  • 相关阅读:
    如何自动化测试你的接口?—— Rest Assured
    【Python opencv 】零基础也能轻松掌握的学习路线与参考资料
    UE4蓝图
    MFC Windows 程序设计[334]之自定义编辑框(附源码)
    Netty实战(二)
    Java语言高级-10MySQL-第4节数据库的CRUD操作
    【编解码格式】Sorenson系列
    展台模型设计色彩搭配的三个技巧---模大狮模型网
    面试题:关于抽象类和接口的理解
    在D中如何64位mulhi
  • 原文地址:https://blog.csdn.net/zeye5731/article/details/125444525