具身智能专题(1)-lerobot环境配置及机械臂调试

1. 从github中克隆lerobot项目

# 版本为0.1.0
git clone https://github.com/huggingface/lerobot.git

2. 环境配置

cd lerobot
conda create -y -n lerobot python=3.10
conda activate lerobot

pip install -e . 
pip install -e ".[aloha, pusht]"
pip install -e ".[dynamixel]"

conda install -c conda-forge ffmpeg

如果pip install -e . 报错pyav安装不上,属于版本不兼容问题。直接执行下面的命令
pip install lerobot==0.1.0

3. 机器人硬件设备及组装

硬件:

  • WOWROBO机械臂套件(主动臂和从动臂)
  • 两个摄像头
  • 一个拍摄支架

在这里插入图片描述组装过程略过(详细请看自身产品的组装说明书)

4.机器人初步部署及测试

安装好机械臂套件并搭建好lerobot环境后,需要统一USB端口,此步骤的目的在于后续不会再重复调整设备的端口号,一次性绑定后,下次断开重连时,系统自动将设备挂载到预设的端口上面,省去后续修改的麻烦。
首先查看USB设备

# 这里已经知道机械臂的前缀信息,如果新设备不知道任何信息,只需要在断开和插上后分别查看/dev目录对比新增的设备端口号即可。

ls /dev/ttyACM*

在这里插入图片描述如上图所示,ttyACM0ttyACM1分别是主臂和从臂的设备端口 (通过拔插实验得到设备及对应端口号),现在需要将这两个接口进行统一固定,具体思路是

leader_port = "/dev/ttyACM10"  # 主臂端口
follower_port = "/dev/ttyACM11"  # 从臂端口

使用 udev 规则绑定自定义端口号:Linux 的 udev 系统允许我们根据设备的属性(例如 idVendor、idProduct、serial 等)创建符号链接,并将设备映射到我们希望的端口号(例如 /dev/ttyACM10 和 /dev/ttyACM11)。

步骤:

查找设备信息:

插上主臂和从臂设备后,运行以下命令分别获取主臂、从臂的设备信息:

udevadm info -a -n /dev/ttyACM0 | grep idVendor # 替换实际插上设备后 主、从臂的 /dev/ttyACM0 端口号,可以加上管道筛选
udevadm info -a -n /dev/ttyACM0 | grep idProduct # 可以加上管道筛选
udevadm info -a -n /dev/ttyACM0 | grep serial # 建议使用管道筛选,不用再去里面寻找

在这里插入图片描述从输出信息中,提取关键设备属性(获取第一个数据):

1. 主臂设备信息:

  • ATTRS{idVendor}=="1a86"
  • ATTRS{idProduct}=="55d3"
  • ATTRS{serial}=="5970073336"

2. 从臂设备信息:略过(步骤同上所示)

创建udev规则文件
sudo vim /etc/udev/rules.d/99-usb-serial.rules

创建一个规则文件,并添加以下内容:

# 主臂设备绑定到 ttyACM10 
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d3", ATTRS{serial}=="5970073336", SYMLINK+="ttyACM10"

# 从臂绑定到 ttyACM11
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d3", ATTRS{serial}=="58FA101430", SYMLINK+="ttyACM11"

SUBSYSTEM=="tty":规则仅适用于串口设备。
ATTRS{idVendor}ATTRS{idProduct}:匹配设备的供应商和产品 ID。
ATTRS{serial}:区分同型号设备。
SYMLINK+="ttyACM10":创建符号链接 /dev/ttyACM10 指向主臂设备。

最后,将主臂设备设置为 /dev/ttyACM10,从臂设备设置为 /dev/ttyACM11

重启udev服务

保存文件后,运行以下命令使规则生效:

sudo udevadm control --reload-rules
sudo udevadm trigger
验证结果

插入设备后,应该能够通过 /dev/ttyACM10/dev/ttyACM11 访问设备。

ls -l /dev/ttyACM10 /dev/ttyACM11 

如果配置成功,应该可以看到 /dev/ttyACM10 和 /dev/ttyACM11 映射到相应的设备。

在这里插入图片描述

自动给端口开权限
sudo vim ~/.bashrc

添加以下内容,并保存

sudo chmod 777 /dev/ttyACM10  # leader
sudo chmod 777 /dev/ttyACM11  # follower
列出并配置电机

将上面的端口修改到下面的代码中,并在交互式式终端中执行代码:

cd lerobot/
python
from lerobot.common.robot_devices.motors.dynamixel import DynamixelMotorsBus

leader_port = "/dev/ttyACM10"
follower_port = "/dev/ttyACM11"

leader_arm = DynamixelMotorsBus(
    port=leader_port,
    motors={
        # name: (index, model)
        "shoulder_pan": (1, "xl330-m077"),
        "shoulder_lift": (2, "xl330-m077"),
        "elbow_flex": (3, "xl330-m077"),
        "wrist_flex": (4, "xl330-m077"),
        "wrist_roll": (5, "xl330-m077"),
        "gripper": (6, "xl330-m077"),
    },
)

follower_arm = DynamixelMotorsBus(
    port=follower_port,
    motors={
        # name: (index, model)
        "shoulder_pan": (1, "xl430-w250"),
        "shoulder_lift": (2, "xl430-w250"),
        "elbow_flex": (3, "xl330-m288"),
        "wrist_flex": (4, "xl330-m288"),
        "wrist_roll": (5, "xl330-m288"),
        "gripper": (6, "xl330-m288"),
    },
)
leader_arm.connect()
follower_arm.connect()
leader_pos = leader_arm.read("Present_Position")
print(leader_pos)
follower_pos = follower_arm.read("Present_Position")
print(follower_pos) 

预期输出:

array([2253,  523, 371, 281, 5549, 2451], dtype=int32)
array([2203, 601,   156, 2153, 2011, 2453], dtype=int32)
### 如何更换 LeRobot 上的机械 在 Ubuntu 环境下的 LeRobot 具身智能机械项目中,更换机械的操作涉及硬件连接、软件配置以及调试等多个方面。以下是关于这一过程的具体说明: #### 硬件准备 为了成功更换 LeRobot机械,需确保新机械与现有系统的兼容性。这通常意味着需要确认以下几点: -机械是否支持 ROS (Robot Operating System)[^1]。 - 是否具备标准化接口(如 CAN 总线或 USB 接口),以便于与 LeRobot 主控板通信。 如果采用的是宇树 Unitree Z1 机械,则可以参考其官方文档中的硬件安装指南[^2]。具体操作可能包括断开旧机械的电源和数据线缆,并按照相同方式重新连接新的机械设备。 #### 软件调整 完成物理替换之后,还需要对软件部分做出相应修改来适配新型号的机械。主要工作集中在以下几个领域: ##### 修改 URDF 文件 统一资源描述格式(URDF)用于定义机器人的几何结构及其运动学特性。当替换了不同规格尺寸或者自由度数量有所变化的新部件时,应该更新对应的 `.urdf` 或者 `.xacro` 文件以反映这些差异。 例如,在 `lerobot_description/package.xml` 中找到当前使用的模型文件路径并编辑之: ```xml <robot name="lerobot"> <!-- Include the new arm's macro --> <include filename="$(find lerobot_description)/robots/new_arm.xacro"/> </robot> ``` 上述代码片段展示了如何通过引入外部宏定义的方式来简化复杂子组件的表现形式。 ##### 配置 MoveIt! MoveIt! 是一个强大的规划框架,广泛应用于工业和服务类机器人之中。对于真实环境下运行的应用程序来说,它能够提供碰撞检测、轨迹优化等功能。因此,在切换至另一种类型的末端执行器之前,有必要对其参数设定予以审查甚至重构。 可以通过如下命令启动针对实际装置版本定制化的演示界面: ```bash roslaunch moveit_setup_assistant setup_assistant.launch ``` 在此过程中特别注意关节限位范围设置以及工具中心点(TCP)位置校准等问题。 #### 测试验证 最后一步就是进行全面的功能检验以保证整个系统正常运作无误。利用 RViz 可视化工具观察模拟效果;借助 Gazebo 物理引擎评估动态性能表现;当然还有必要在线路级联测试环节里仔细排查潜在隐患风险因素等等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigCabbageFy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值