Skip to content

    小米杯考核:四足机器人仿真环境搭建

    一、考核目的

    本考核旨在检验参赛者对机器人仿真环境的基本搭建能力以及对 ROS2 与 Gazebo 仿真系统的基础使用能力。

    参赛者需要完成以下任务:

    1. 在本地电脑成功搭建 Cyberdog 仿真环境
    2. 成功运行 Gazebo + RViz2 仿真程序
    3. 启动 运动控制管理程序
    4. 在仿真环境中使 机器狗正常运动

    完成以上内容即可判定为 考核合格

    二、考核环境要求

    1. 操作系统

    推荐使用:

    • Ubuntu 20.04

    环境部署方式允许以下三种:

    • 双系统(Windows + Ubuntu)
    • 虚拟机(VMware / VirtualBox)
    • WSL(Windows Subsystem for Linux)

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

    2. 软件环境

    需要安装:

    • Docker 20.10.21
    • ROS2 Galactic(已包含在 Docker 镜像中)

    Docker 安装教程:

    3. 推荐硬件配置

    建议电脑配置如下:

    硬件推荐配置
    CPU4核心及以上
    内存16GB 及以上
    GPUNVIDIA 独立显卡(推荐)
    存储50GB 以上空间(SSD 推荐)

    该仿真环境基于 Gazebo 仿真器,因此对显卡和内存要求较高。

    三、考核任务

    参赛者需要完成以下任务:

    1. 安装 Ubuntu 系统
    2. 安装 Docker
    3. 导入 Cyberdog 仿真 Docker 镜像
    4. 启动 Gazebo 仿真环境
    5. 启动机器狗控制程序
    6. 成功运行仿真并观察机器狗运动

    教程位置:

    四、环境搭建步骤

    下载 Docker 镜像

    下载镜像文件:

    Plain Text
    cyberdog_race.tar

    镜像大小约 10GB

    示例下载地址

    下载完成后,将文件放在 Ubuntu 系统目录中。

    五、导入 Docker 镜像

    打开终端,执行:

    Bash
    sudo docker load -i cyberdog_race.tar

    导入完成后,可通过以下命令查看镜像:

    Bash
    docker images

    六、授权 X Server

    为了使 Docker 内部程序能够打开图形界面(Gazebo / RViz),需要授权 X Server。

    执行:

    Bash
    xhost +

    七、运行 Docker 容器

    运行仿真环境容器:

    Bash
    sudo docker run -it \
    --shm-size="1g" \
    --privileged=true \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    cyberdog_sim:v1

    运行后进入 Docker 内部终端。

    八、运行仿真环境

    在 Docker 终端中执行:

    Bash
    cd /home/cyberdog_sim
    python3 src/cyberdog_simulator/cyberdog_gazebo/script/launchsim.py

    该脚本将启动完整仿真系统。

    启动后会出现三个窗口:

    1. cyberdog_gazebo Gazebo 仿真环境窗口
    2. cyberdog_control 机器人控制程序窗口
    3. cyberdog_visual RViz2 可视化窗口

    Gazebo 用于仿真机器人与环境交互,RViz 用于显示机器人状态与传感器数据。

    九、启动运动控制程序

    打开 新的终端(Docker 内)

    执行:

    Bash
    cd /home/cyberdog_ws
    
    source /opt/ros/galactic/setup.bash
    source install/setup.bash
    
    ros2 run motion_manager motion_manager

    该程序提供 ROS2 Topic 控制接口,可将 ROS2 控制指令转换为 LCM 指令发送给控制程序。

    十、仿真通信结构简介(了解)

    仿真系统中主要包含两种通信方式:

    1. LCM 通信

    用于机器人控制程序与仿真系统之间的通信。

    2. ROS2 Topic

    用于:

    • 机器人状态
    • 传感器数据
    • 控制命令

    常见 topic 包括:

    Plain Text
    /joint_states
    /tf
    /imu
    /scan

    Gazebo 会将仿真传感器数据发布为 ROS2 Topic。

    十一、常见问题解决

    Gazebo 无法正常关闭

    如果 Gazebo 无法关闭,可以执行:

    Bash
    killall -9 gazebo
    killall -9 gzserver
    killall -9 gzclient