AlohaMini2 Pro 快速入门指南(极简)#

返回官方使用手册

适用型号:AlohaMini 2 Pro。树莓派与 PC 均使用 alohamini2pro。相机名称以实际配置为准,采集、转换、训练与推理必须使用一致的数据特征名。IP、设备序列号和检查点路径需替换为本机值。AM-ACT 参数配置见 训练说明。

一、启动机器人(树莓派端)#

1、给机器人通电,点击屏幕,查找树莓派ip地址

AlohaMini2 Pro 快速入门指南(极简) · 图 1

AlohaMini2 Pro 快速入门指南(极简) · 图 2

2、打开PC电脑的Terminal,运行SSH登录机器人(ssh密码:123456):

AlohaMini2 Pro 快速入门指南(极简) · 图 3

通过 SSH 登录机器人:

ssh pi5@192.168.xx.xx # 替换为机器人树莓派的IP 
# 密码123456

进入conda环境并启动主程序:

conda activate lerobot_alohamini
cd lerobot_alohamini

# AlohaMini 2 Pro (AM‑ARM 6‑DoF, sts3250 upgrade)
python -m lerobot.robots.alohamini.alohamini_host \
  --robot_model alohamini2pro

程序启动后,由于设备在出厂时已完成校准,因此会自动跳过校准流程,直接进入启动状态,并开始输出各关节电流信息。

AlohaMini2 Pro 快速入门指南(极简) · 图 4

至此,机器人本体启动完成。

二、启动遥操作(PC端)#

建议准备一台Ubuntu22.04或24.04系统,并根据 lerobot_alohamini 仓库完成环境安装(conda + 依赖)。

环境安装:#

安装Conda#

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
source ~/.bashrc

克隆仓库并安装依赖#

git clone https://github.com/liyiteng/lerobot_alohamini.git
cd lerobot_alohamini
conda create -y -n lerobot_alohamini python=3.12
conda activate lerobot_alohamini
pip install -e ".[all]"
pip install pyzmq feetech-servo-sdk
conda install -y ffmpeg=7.1.1 -c conda-forge

端口授权#

sudo usermod -a -G dialout $USER
# 完成后重启电脑

1、遥操臂端口查询#

a)随机挑选一只遥操臂,并用马克笔标记为左臂

b) 将左臂连接到Ubuntu电脑,输入命令

ls /dev/ttyACM*

预期输出:

AlohaMini2 Pro 快速入门指南(极简) · 图 5

c)查找左臂驱动板的序列号

udevadm info --attribute-walk --name=/dev/ttyACM0 | awk -F'"' '/ATTRS{serial}/{print $2; exit}'

预期输出:

AlohaMini2 Pro 快速入门指南(极简) · 图 6

其中,5B3D040583就是左臂序列号。

d) 用马克笔标记另一只遥操臂为右臂

e) 将右臂连接到Ubuntu电脑,输入命令

ls /dev/ttyACM*

预期输出:

AlohaMini2 Pro 快速入门指南(极简) · 图 7

f)查找右臂驱动板的序列号

udevadm info --attribute-walk --name=/dev/ttyACM1 | awk -F'"' '/ATTRS{serial}/{print $2; exit}'

预期输出:

AlohaMini2 Pro 快速入门指南(极简) · 图 8

其中,5B3D041923就是右臂序列号。

g)小结

通过上述步骤,我们得到了左臂驱动版的序列号(5B3D040583)和右臂驱动版的序列号(5B3D041923)

2、端口绑定(写udev配置文件)#

a) 打开配置文件:90-mydevice.rules

sudo nano /etc/udev/rules.d/90-mydevice.rules

b) 写入内容

SUBSYSTEM=="tty", ATTRS{serial}=="5B3D040583", SYMLINK+="am_arm_leader_left"
SUBSYSTEM=="tty", ATTRS{serial}=="5B3D041923", SYMLINK+="am_arm_leader_right"

c) 重载激活

sudo udevadm control --reload-rules
sudo udevadm trigger

d) 验证是否生效

ls -l /dev/am*

预期输出:

AlohaMini2 Pro 快速入门指南(极简) · 图 9

至此,遥操臂的端口与PC电脑绑定成功。

3、检查两个遥操臂状态是否正常#

# 进入conda环境
conda activate lerobot_alohamini
cd lerobot_alohamini

#执行获取舵机状态命令
python examples/debug/motors.py get_motors_states \
  --port /dev/am_arm_leader_left

  python examples/debug/motors.py get_motors_states \
  --port /dev/am_arm_leader_right

预期输出,并且操纵leader arm,可以看到POS数值的变化

AlohaMini2 Pro 快速入门指南(极简) · 图 10

4、开启遥操作#

a)第一次使用遥操臂,需要进行机械臂校准

遥操臂校准命令:

python examples/alohamini/calibrate_bi.py \
  --teleop.id am_leader_bi \
  --teleop.arm_profile am-leader-6dof

根据提示自行完成标定流程**(参考视频:** https://b23.tv/Dd1xFYz)。

b)校准完成后,进行遥操作

python examples/alohamini/teleoperate_bi.py \
  --robot.remote_ip 192.168.x.xx \
  --robot.robot_model alohamini2pro \
  --teleop.id am_leader_bi \
  --teleop.arm_profile am-leader-6dof

自动连接远端机器人后,终端会持续输出实时状态信息。用户可通过键盘控制机器人底盘移动和升降机构运动,同时也可通过遥操臂对机械臂进行远程操作。

AlohaMini2 Pro 快速入门指南(极简) · 图 11

按键

功能

W / S

前进 / 后退

A / D

左转 / 右转

Z / X

左平移 / 右平移

按键

功能

U / J

上升 / 下降

三、配置摄像头#

修改配置文件:

src/lerobot/robots/alohamini/config_alohamini.py

所在机器

作用

树莓派(下位机)

控制实际摄像头的采集

PC(上位机)

控制客户端订阅哪些摄像头数据

⚠️ 两端必须保持一致。 若树莓派启用了某个摄像头而 PC 端没有,或反之,会导致连接异常或数据不匹配。每次修改后,请同步更新两台机器上的文件,并重启两端的进程。

摄像头配置说明#

配置文件中,所有摄像头均通过 alohamini_cameras_config() 函数进行统一管理。 如需禁用某个摄像头,只需将对应配置注释掉即可。

def alohamini_cameras_config() -> dict[str, CameraConfig]:
    return {
        "head_top": OpenCVCameraConfig(
            index_or_path="/dev/am_camera_head_top", fps=30, width=640, height=480, rotation=Cv2Rotation.NO_ROTATION
        ),
        # "head_back": OpenCVCameraConfig(
        #     index_or_path="/dev/am_camera_head_back", fps=30, width=640, height=480, rotation=Cv2Rotation.NO_ROTATION
        # ),
        # "head_front": OpenCVCameraConfig(
        #     index_or_path="/dev/am_camera_head_front", fps=30, width=640, height=480, rotation=Cv2Rotation.NO_ROTATION
        # ),
        # "wrist_left": OpenCVCameraConfig(
        #     index_or_path="/dev/am_camera_wrist_left", fps=30, width=640, height=480, rotation=Cv2Rotation.NO_ROTATION
        # ),
        # "wrist_right": OpenCVCameraConfig(
        #     index_or_path="/dev/am_camera_wrist_right", fps=30, width=640, height=480, rotation=Cv2Rotation.NO_ROTATION
        # ),
    }

四、录制数据集#

录制数据集#

在终端中输入下面指令,录制一个新数据集(注意修改成合适的参数):

python examples/alohamini/record_bi.py \
  --dataset.repo_id user/am2_bi_test \
  --dataset.root "$HOME/user/am2_bi_test" \
  --dataset.num_episodes 1 \
  --dataset.fps 25 \
  --dataset.episode_time_s 60 \
  --dataset.reset_time_s 10 \
  --dataset.single_task "pickup1" \
  --robot.remote_ip 192.168.8.117 \
  --robot.robot_model alohamini2pro \
  --teleop.id am_leader_bi \
  --teleop.arm_profile am-leader-6dof \
  --dataset.push_to_hub=false \
  --display-data=true

参数:

--dataset.repo_id 数据集逻辑名称 xxx/xxx的形式

--dataset.root 数据集实际保存的位置

--dataset.num_episodes 本次录制的数据回合的数量

--dataset.fps 本次录制的数据集帧率(推荐25)

--dataset.reset_time_s 每个数据回合之间休息的时间,用于还原状态

--display-data=true 是否显示回传的画面

默认目录:

~/.cache/huggingface/lerobot/

指定其他保存目录:

--dataset.root ~/user/am2_bi_test

--dataset.root 只改变本地保存位置,不改变 dataset.repo_id。目标目录在新建数据集时应不存在。

续传数据集#

在原命令中增加 --resume,并保持相同的 repo_id 和 root:

python examples/alohamini/record_bi.py \
  --dataset.repo_id user/am2_bi_test \
  --dataset.root "$HOME/user/am2_bi_test" \
  --dataset.num_episodes 1 \
  --dataset.fps 25 \
  --dataset.episode_time_s 60 \
  --dataset.reset_time_s 10 \
  --dataset.single_task "pickup1" \
  --robot.remote_ip 192.168.8.117 \
  --robot.robot_model alohamini2pro \
  --teleop.id am_leader_bi \
  --teleop.arm_profile am-leader-6dof \
  --dataset.push_to_hub=false \
  --display-data=true \
  --resume

一旦新建数据集,再次录制就需要增加--resume参数,否则会报错:文件已存在。

五、回放数据集#

这里有两种“回放”:

  1. 在 Rerun 中查看图像、状态和动作,不控制机器人。

  2. replay 到真机,让机器人执行数据集中记录的动作。

1、Rerun 可视化数据集#

HF_HUB_OFFLINE=1 \
lerobot-dataset-viz \
  --repo-id user/am2_bi_test \
  --root "$HOME/user/am2_bi_test" \
  --episode-index 0 \
  --display-compressed-images

2、replay 到真机#

HF_HUB_OFFLINE=1 \
python examples/alohamini/replay_bi.py \
  --dataset.repo_id user/am2_bi_test \
  --dataset.root "$HOME/user/am2_bi_test" \
  --dataset.episode 0 \
  --robot.remote_ip 192.168.8.117 \
  --robot.robot_model alohamini2pro

#

六、训练数据集#

示例方法1、本机训练普通ACT模型(容易训练,但对移动支持较差)#

直接终端执行命令即可:

HF_HUB_OFFLINE=1 \
HF_DATASETS_OFFLINE=1 \
TORCH_HOME="$HOME/.cache/torch" \
lerobot-train \
  --dataset.repo_id=user/am2_bi_test \
  --dataset.root="$HOME/user/am2_bi_test" \
  --dataset.video_backend=pyav \
  --policy.type=act \
  --policy.device=cuda \
  --policy.push_to_hub=false \
  --save_checkpoint_to_hub=false \
  --output_dir=outputs/train/act_am2_bi_test \
  --job_name=act_am2_bi_test \
  --steps=100000 \
  --batch_size=6 \
  --wandb.enable=false

示例方法2、本机训练AM-ACT模型(适用于移动型任务)#

第一步:在 PC 生成纯视觉数据集

python -m lerobot.scripts.create_alohamini_visual_only_dataset \
  --source "$HOME/user/am2_bi_test" \
  --target "$HOME/user/am2_bi_test_visual_only" \
  --keep-camera forward \
  --keep-camera wrist_right \
  --drop-state

第二步:运行训练命令

HF_HUB_OFFLINE=1 \
HF_DATASETS_OFFLINE=1 \
TORCH_HOME="$HOME/.cache/torch" \
lerobot-train \
  --dataset.repo_id=user/am2_bi_test_visual_only \
  --dataset.root="$HOME/user/am2_bi_test_visual_only" \
  --dataset.video_backend=pyav \
  --policy.type=am_act \
  --policy.device=cuda \
  --policy.fixed_action_dims='[0,1,2,3,4,5,6]' \
  --policy.discrete_action_dims='[14,15,16]' \
  --policy.discrete_action_values='[[-0.15,0,0.15],[-0.15,0,0.15],[-45,0,45]]' \
  --policy.discrete_action_class_weights='[[3,1,1.5],[3,1,2],[2,1,2]]' \
  --policy.discrete_action_loss_weight=1.0 \
  --policy.push_to_hub=false \
  --save_checkpoint_to_hub=false \
  --output_dir=outputs/train/am2_bi_test_visual_only \
  --job_name=am_act_am2_bi_test \
  --steps=100000 \
  --batch_size=6 \
  --wandb.enable=false

注意,以上默认的policy参数仅适用于1、右臂夹取,左臂始终静止 2、底盘在数据集中需要有前后、旋转、平移的操作。若数据集中缺少平移动作,则训练时报错(ValueError: Action dimension 15 has zero std and cannot be classified.)。

#

七、本地推理#

推理前先启动树莓派 Host,并清空机器人周围区域。

# 在PC的终端中运行命令
conda activate lerobot_alohamini
cd lerobot_alohamini

python examples/alohamini/evaluate_bi.py \
  --eval.n_episodes 1 \
  --fps 25 \
  --dataset.single_task "pick up the block and place it in the box" \
  --policy.path outputs/train/act_pick_test_01/checkpoints/020000/pretrained_model \
  --dataset.repo_id local/eval_act_pick_test_01 \
  --dataset.push_to_hub=false \
  --robot.remote_ip 192.168.8.117 \
  --robot.id my_alohamini \
  --robot.robot_model alohamini2pro \
  --inference.type sync \
  --interpolation_multiplier 3

关键参数:

  • --inference.type sync:每个策略控制步同步调用一次 select_action();ACT 等策略使用该模式。

  • --fps 25:策略动作频率。首次测试建议 15~20 Hz,确认稳定后再提高。

  • --interpolation_multiplier 1:关闭动作插值。设置为 3 时,每两个策略动作之间生成中间动作,

机器人命令频率变为 fps × 3,但不会提高模型推理频率。

  • --dataset.repo_id:本次评估数据集名称;evaluate_bi.py 会记录观测和实际发送的动作。

  • --dataset.push_to_hub=false:只保存在本机,不上传 Hugging Face Hub。

  • --robot.robot_model:必须与树莓派 Host 端型号完全一致,否则状态和动作维度可能错位。

第一次推理建议:

  • --eval.n_episodes 1

  • --eval.episode_time_s 15

  • --inference.type sync

  • --interpolation_multiplier 1

  • 手放在电源开关附近

  • 发现动作方向、幅度或速度异常时立即停止