.. _tutorial_dt_robot_zh: DASA数字孪生机器人概念 ====================== 我们在 `虚幻引擎 (UE) `_ 的帮助下在 DASA 中建立了数字孪生机器人概念。 UE 是 Epic Games 开发的 3D 计算机图形游戏引擎,广泛应用于视频游戏、电影和电视。我们在 DASA 中利用强大的 UE 功能来实现外观逼真的数字机器人,并允许与现实中的对应机器人进行实时同步。 .. image:: ../img/ue_robot/robot_view.png :height: 350 px :width: 750 px :scale: 100 % :align: center 软件构成 ------------- .. image:: ../img/ue_robot/ue_robot_comp.png :height: 350 px :width: 750 px :scale: 100 % :align: center 数字孪生机器人概念由几个组件组成,如上图所示: - DASA 基础设施软件模块:DASA 软件提供机器人定位、通信和消息同步,如教程 :ref:`tutorial_indoor_loco` 中所示。该软件位于 ~/DASA_space/catkinws_dasa。 - UE 引擎:UE 4.27 引擎安装在 DASA 桌面中,该桌面随我们的解决方案一起提供,位于 /home/dasa/src/UnrealEngine-4.27-plus 下,我们为 DASA 机器人创建带有插件的定制项目。 - Airsm ROS 包装器:Airsim ROS 包装器通过向 ROS 网络公开接口,实现与 UE 引擎中的数字机器人的交互。 设置步骤 ------------ #. 机器人端 我们需要在机器人机载电脑端安装和编译最新的catkinws_dasa工作区软件,参考:ref:`tutorial_indoor_loco`,并设置好在局域网内同步的topic信息, 以下是 1 架无人机和 2 辆无人车的共享话题: :: '/dasa/local_position/pose', /uav1/dasa/local_position/pose', '/uav1/dasa/local_position/velocity', '/rover2/dasa/local_position/pose', '/rover2/dasa/local_position/velocity', '/rover3/dasa/local_position/pose', '/rover3/dasa/local_position/velocity' #. DASA 计算机配置 - 我们必须以与机器人端相同的方式安装和构建 catkinws_dasa 工作区。 - 我们需要配置位于文件 ~/Documents/Airsim/settings.json 中的 Airsim 插件。默认情况下,用户不需要更改该文件。请记住在进行任何修改之前备份它。 如何启动 --------------------- #. 机器人端 我们需要打开 DASA_SWARM 路由器,然后启动每个机器人。默认情况下,每个机器人将启动与 catkinws_dasa 工作区对应的节点并连接到 DASA_SWARM 网络。用户也可以参考教程 :ref:`tutorial_indoor_loco` 了解详细信息。 #. DASA 计算机配置 - 通过ping指令查看各机器人是否连接到本地局域网,例如: :: ping uav1 ping rover2 ping rover3 # or ping their corresponding ip address directly ping 192.168.0.101 ping 192.168.0.102 ping 192.168.0.103 如果ping有返回值,证明各机器人端已经联网,否则需要查看和排查网络连接情况。 - 启动~/DASA_space/catkinws_dasa/scripts目录下的run_gcs_visualization.sh脚本,之后通过rostopic 指令,我们可以看到所有机器人发布的位姿话题。 - 启动UE引擎,并运行城市沙盘项目,点击play按钮。 - 启动Airsim的ROS wrapper,之后可以尝试手动移动机器人查看UE引擎显示,正常情况下虚拟世界的机器人位姿和实际的是同步的 :: ~/src/cloudkernel_proj/Airsim/ros source devel/setup.bash; roslaunch airsim_ros_pkgs airsim_node.launch; .. image:: ../img/ue_robot/ros_demo.jpg :height: 350 px :width: 750 px :scale: 100 % :align: center