GitHub开源机器人项目Text2Robot详解
在上一篇文章中,我们详细介绍了杜克大学研究团队开发的Text2Robot系统—这个能够将文字描述转换为实体四足机器人的新框架。
今天,我们将深入这个好玩的项目的GitHub开源代码库,帮助你实际动手,从零开始创建自己的Text2Robot机器人。
杜克大学团队不仅发表了研究论文,还慷慨地将整个项目代码开源,包括从文本生成网格、网格处理到机器人控制的完整工作流程。
https://github.com/generalroboticslab/Text2Robot
这意味着,即使没有机器人学或深度学习背景的爱好者,也可以使用这套工具创建独特的、功能性的四足机器人。
让我们一步一步了解如何使用这个开源项目,实现从文字到机器人的奇妙转变。
项目结构:一览Text2Robot的完整实现流程
Text2Robot的GitHub仓库组织得非常清晰,包含了从文本到机器人的全流程工具链。
项目主要分为以下几个部分:
- Text2Mesh:使用Meshy网站将文本提示转换为STL网格文件
- Mesh2CAD:通过Fusion360自定义脚本将STL网格转换为可动机器人模型
- CAD2URDF:将CAD模型导出为机器人描述格式(URDF)文件
- 进化算法:优化机器人形态和控制策略
- Sim2Real:将模拟机器人转移到现实世界中
仓库还包含一个详细的PDF组装指南,以及已预生成的STL文件示例,让你可以直接从中间步骤开始,无需从头执行每个流程。
环境配置:为AI机器人设计做好准备
Text2Robot基于Isaac Gym模拟环境,其安装已在Ubuntu 22.04.4 LTS与CUDA 12.3上进行了测试。
开发团队在多种高性能GPU上进行了实验,包括PNY RTX A6000、NVIDIA GeForce RTX 3090和NVIDIA A100 PCIe。
安装过程相对简单,仓库根目录下提供了conda_env_py38.yaml文件,可以使用以下命令快速创建环境:
# 创建环境
conda env create --file conda_env_py38.yaml -y
# 激活环境
conda activate py38
# 导出库路径
export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib
AM易道提醒:如果你使用的是micromamba而不是conda,可以通过设置别名alias conda="micromamba"来兼容上述命令。
从文字到3D模型:使用Meshy生成机器人原型
Text2Robot的第一步是使用文本生成3D模型。
项目推荐使用Meshy网站(https://www.meshy.ai/)来生成STL格式的网格模型。
为了方便用户,仓库中已经提供了实验中使用的STL文件,位于STL_Files/Example_Meshes目录下。
如果你想创建新的机器人模型,可以访问Meshy网站,在提示中必须包含「quadrupedal walking robot」(四足行走机器人)关键词以获得最佳结果。
需要注意的是,自定义生成的网格不保证与提供的切片脚本完全兼容,需要进行一些调整。
网格转CAD:将静态模型转换为可动机器人
生成的STL网格需要转换为Fusion360装配体,这是将静态模型转变为可动机器人的关键一步。
首先需要安装Fusion360(教育版可免费获取),然后按照以下步骤操作:
- 将网格插入Fusion360文档
- 使用「转换网格」操作将网格转换为BREP体(需启用Fusion设计扩展中的有机网格转换功能)
- 将Fusion360_Scripts文件夹中的Python脚本添加到Fusion360中
- 运行Install_Packages脚本安装必要的Python库
- 在运行切片脚本前,将「Polyethylene Low Density」(低密度聚乙烯)材料添加到收藏夹
- 运行Wrapper脚本将预处理的BREP体转换为机器人装配体
AM易道提示:如果网格无法正确切片,可以通过调整slicebody函数中的slicebyDX步骤来调整肩部切片的位置。
CAD转URDF:准备机器人进化优化
在Wrapper脚本中取消注释URDF导出器函数,将生成的机器人导出为URDF格式。
更进一步,取消注释循环部分将创建所生成机器人的30种变体,并将所有变体导出为URDF文件。
这个过程可能需要长达15分钟的时间,但为后续的进化优化提供了丰富的初始种群。
进化算法:优化机器人形态和控制策略
Text2Robot的核心是其进化算法,它能同时优化机器人的形态和控制策略。
仓库中提供了一个完整的示例实验Evolutionary_Algorithm/Example_Experiment,你可以基于此创建自己的实验。
要运行进化算法,需要创建一个包含URDF_Bank文件夹的实验目录,该文件夹将存放整个基因库。
研究团队建议使用至少5个提示,生成总计150个机器人模型。
如果模型数量较少,需要修改Evolutionary_Algorithm/init_population来初始化较小的第一代种群。
在Evolutionary_Algorithm/experiments文件夹下,可以创建配置文件定制训练参数。
通过编辑driver.py的前几行代码,可以更改进化的代数、能源效率偏好、速度追踪精度或粗糙地形性能等参数:
max_generations = 55
inform_based_on_energy = False
inform_based_on_velocity = False
rough_terrain = False
运行实验后,可以在legged_env/envs目录中使用以下命令可视化任何进化机器人及其行走策略:
bash run.sh example -pk
这将可视化一个进化青蛙的示例检查点。-pk指定播放模式,并启用键盘输入,允许使用(ijkl)作为方向键和(u和o)控制偏航(旋转速度)来控制机器人的速度。
从模拟到现实:3D打印并组装你的机器人
完成模拟优化后,最激动人心的部分来了—将虚拟机器人转化为物理实体。
仓库中提供了详细的Assembly Instructions.pdf,指导你打印和组装机器人。
要实现从模拟到现实的转移,需要将Sim2Real_Receiver/receiver.py下载到机器人的树莓派上,并安装PyLX-16A伺服控制库。
运行receiver.py脚本将监听在模拟中播放机器人时传输的UDP消息包。
需要确保数据接收器和数据发布器的target_url匹配。示例代码:
example(){
base
task=RobotDog
PLAY_ARGS+=(
num_envs=1
checkpoint=assets/checkpoints/example_frog.pth
)
BASE_ARGS+=(
# task.env.terrain.terrainType=plane
++task.env.urdfAsset.root="assets/urdf/example_frog"
task.env.urdfAsset.file="frog.urdf"
task.env.randomCommandVelocityRanges.linear_x=[-0.5,0.5]
task.env.randomCommandVelocityRanges.linear_y=[-0.5,0.5]
task.env.randomCommandVelocityRanges.yaw=[-1,1]
task.env.dataPublisher.enable=true
task.env.dataPublisher.target_url=udp://10.172.14.96:9870
)
}
3D打印从业者的实用建议
作为3D打印领域从业者,使用Text2Robot创建机器人时有几点特别需要注意:
项目最好使用有较大的打印床的设备,适合机器人部件的批量打印。如果使用其他打印机,可能需要调整部件分割方式。
项目推荐使用PLA材料,但对于需要更高机械强度的应用场景,PETG或尼龙材料可能是更好的选择。
电子元件兼容性默认配置使用Hiwonder HTD-45H高压串行总线伺服电机和树莓派4控制器,如需替换其他元件,请确保在Assembly Instructions.pdf中查看详细的电子元件清单并相应调整。
关于项目背后的算法和学术文章,请查阅今日更新的同名项目内容。


京公网安备11010802046387号