十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

XLeRobot SO100/SO101 机械臂控制实战:从键盘关节控制到 YOLO 视觉跟踪

XLeRobot SO100/SO101 机械臂控制实战:从键盘关节控制到 YOLO 视觉跟踪 XLeRobot SO100/SO101 机械臂控制实战从键盘关节控制到 YOLO 视觉跟踪【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot本文聚焦 XLeRobot 开源仓库中 SO100/SO101 单臂与双臂机械臂的四种控制示例覆盖关节级直接控制、基于解析逆运动学的末端执行器End-EffectorEE笛卡尔空间控制、双串口双臂协同控制以及无需训练的 YOLO 视觉跟踪。读完本文你将掌握这些示例脚本的完整运行方式、底层 P 控制与解析 IK 的实现原理以及如何根据自身硬件修改校准参数、键盘映射与视觉检测目标。一、示例总览与适用前提所有示例脚本均位于仓库的 software/examples 目录文件编号与文档章节一一对应编号脚本控制方式适用场景00_so100_keyboard_joint_control.py键盘直接控制 6 个关节角度基础电机测试、关节级调试11_so100_keyboard_ee_control.py键盘控制末端执行器 X/Y 坐标解析 IK直观遥操作单臂22_dual_so100_keyboard_ee_control.py双串口双臂分别映射键盘解析 IK双臂协同操作33_so100_yolo_ee_control.py键盘控制 独立 YOLO 检测显示视觉反馈 手动遥操作在开始之前需确认以下几点代码中类名与脚本名均保留为so100但根据 software/readme.md 的说明这些代码同时兼容 SO100 与 SO101只是命名未改可放心使用。脚本基于 LeRobot 框架lerobot开发运行时需要安装 lerobot 及对应驱动依赖参见 安装指南。机械臂通过 USB 串口连接默认/dev/ttyACM0运行前需确认端口与设备权限。仓库官方文档建议如果此前未接触过 lerobot SO101 手臂可先测试单臂遥操作并熟悉一段时间再进阶到双臂与视觉控制见 软件索引。二、示例 0键盘关节级控制最基础的直接控制运行python 0_so100_keyboard_joint_control.py通过键盘输入直接调整各关节的目标角度。这种控制方式不涉及逆运动学计算每个按键对应一个关节的方向增减适合逐关节验证电机、机械限位与零点标定。2.1 关节校准系数脚本顶部定义了JOINT_CALIBRATION校准表0_so100_keyboard_joint_control.py格式为[关节名, 零点偏移(度), 比例系数]JOINT_CALIBRATION [ [shoulder_pan, 6.0, 1.0], # Joint1: 零点偏移, 比例系数 [shoulder_lift, 2.0, 0.97], # Joint2: 零点偏移, 比例系数 [elbow_flex, 0.0, 1.05], # Joint3: 零点偏移, 比例系数 [wrist_flex, 0.0, 0.94], # Joint4: 零点偏移, 比例系数 [wrist_roll, 0.0, 0.5], # Joint5: 零点偏移, 比例系数 [gripper, 0.0, 1.0], # Joint6: 零点偏移, 比例系数 ]校准公式为calibrated (raw - offset) * scale见apply_joint_calibration函数。注释中明确提示manual edit——不同机器人安装偏差不同请按自己硬件实测调整。2.2 P 控制循环与安全机制脚本的核心是 P比例控制循环键盘只修改目标角度机器人以 50Hz 控制频率持续向目标逼近控制输出new_position current kp * error默认kp0.5p_control_loop。安全机制值得关注启动时先询问是否重新校准robot.calibrate()否则使用上次校准文件启动后先用 3 秒 P 控制缓慢移动到零点move_to_zero_position避免瞬移按x或ESC退出时先自动回到启动姿态return_to_start_position误差小于 2° 视为到位再断开连接。2.3 完整键盘映射按键作用按键作用Q/AJoint1shoulder_pan减小 / 增大R/FJoint4wrist_flex减小 / 增大W/SJoint2shoulder_lift减小 / 增大T/GJoint5wrist_roll减小 / 增大E/DJoint3elbow_flex减小 / 增大Y/HJoint6gripper减小 / 增大夹爪范围 0~100三、示例 1键盘末端执行器控制解析逆运动学运行python 1_so100_keyboard_ee_control.py此时W/S与E/D不再直接驱动关节而是控制末端执行器在笛卡尔空间的 X、Y 坐标由内置的解析逆运动学实时换算为shoulder_lift与elbow_flex的目标角度控制更直观。3.1 解析 IK 的核心实现脚本内置inverse_kinematics(x, y, l10.1159, l20.1350)1_so100_keyboard_ee_control.py其中l1上臂 0.1159 m与l2下臂 0.1350 m为连杆长度。算法要点考虑关节偏移通过theta1_offset atan2(0.028, 0.11257)、theta2_offset atan2(0.0052, 0.1349) theta1_offset补偿 URDF 中关节在非零角时的几何偏移工作空间约束当目标点超出可达范围r_max l1 l2时按比例缩放到边界小于r_min |l1 - l2|时同样缩放保证余弦定理不越界余弦定理求角先由cos_theta2求肘部角再由beta gamma求肩部角最终把弧度换算为角度并做坐标变换90 - joint2、joint3 - 90映射回 URDF 关节定义并夹取在joint2 ∈ [-0.1, 3.45]、joint3 ∈ [-0.2, π]的限位内。同一套几何模型在仓库中被封装为可复用的SO101Kinematics类SO101Robot.py该类还提供了forward_kinematics正运动学与generate_sinusoidal_velocity_trajectory正弦速度直线轨迹生成器方法可进一步用于轨迹规划实验。3.2 姿态保持与键盘映射初始末端位置为x00.1629, y00.1131每次按键步进0.004 mR/F调节 pitch 偏置wrist_flex目标由-shoulder_lift - elbow_flex pitch自动推算p_control_loop使手腕在移动过程中尽量保持姿态Q/A控制shoulder_panT/G控制wrist_rollY/H控制夹爪。四、示例 2双臂键盘控制双串口协同运行python 2_dual_so100_keyboard_ee_control.py可同时控制分别连接在/dev/ttyACM0与/dev/ttyACM1的两条 SO100/SO101 手臂2_dual_so100_keyboard_ee_control.py。脚本为每条手臂创建独立的SO100Follower实例并存入robots {arm1: ..., arm2: ...}字典主循环内为双臂各自计算 P 控制输出并逐一send_action。4.1 双臂独立键盘映射第一臂按键行7y8u9i0o-p[作用第二臂按键行hbjnkml,;./作用7/yshoulder_pan减 / 增h/bshoulder_pan减 / 增8/u末端 X 减 / 增j/n末端 X 减 / 增9/i末端 Y 减 / 增k/m末端 Y 减 / 增/[第一臂 pitch 增 / 减,/.第二臂 pitch 增 / 减0/owrist_roll减 / 增;/lwrist_roll减 / 增-/p夹爪收 / 放//夹爪收 / 放双臂各自维护独立的target_positions[arm1]/target_positions[arm2]与末端坐标互不干扰退出时双臂统一回到各自启动姿态总误差小于 4° 视为到位。4.2 双臂模式注意事项两条手臂必须分别出现在不同串口若实际端口不是默认值需修改脚本中的arm1_port/arm2_port校准操作会依次对双臂执行robot.calibrate()从源码结构看脚本通过字典组织双臂状态与动作若想扩展到三臂或更多只需按相同模式扩展字典即可。五、示例 3基于 YOLO 的视觉跟踪运行python 3_so100_yolo_ee_control.py在保持键盘遥操作的同时启动一个独立的 YOLO 实时检测线程将摄像头画面中的目标如瓶子检测结果显示在YOLO Live Detection窗口中。该演示无需任何训练开箱即用。5.1 核心运行逻辑脚本使用 Ultralytics 的开放词汇检测模型YOLOE3_so100_yolo_ee_control.pymodel YOLOE(yoloe-11l-seg.pt) # 也可选用 yoloe-11s/m-seg.pt 等不同尺寸 target_input input(Enter objects to detect (e.g., bottle,cup,mouse): ) model.set_classes(target_objects, model.get_text_pe(target_objects))通过set_classesget_text_pe把文本类别注入模型因此可以按自然语言指定任意检测目标无需预训练类别视频流在线程video_stream_loop中运行仅做检测与显示results[0].plot()与主线程的机器人控制完全独立互不阻塞相机通过cv2.VideoCapture打开脚本会自动枚举可用相机索引并交互式选择。5.2 同族的两种进阶变体仓库中还提供了两个功能更强的变体可按需替换使用3_so100_yolo_ee_control_seg.py分割掩码显示版本顶部集中定义了可调参数——默认物体如black robot以蓝色渲染且置信度阈值较低0.1用户指定的目标物体以红色渲染阈值 0.4背景为灰色全部可一键修改3_so100_yolo_ee_follow.py真正的视觉伺服跟随版本使用YOLO(yolo11x.pt)检测目标中心偏移量通过映射系数K_pan -0.006弧度/像素与K_y 0.00004米/像素自动调整shoulder_pan与末端 Y 坐标实现机器人自主跟踪目标如鼠标注释明确提示这两个系数tune as needed需按相机安装位置与画面分辨率实测标定。5.3 视觉控制参考文档在 SO101.md 中提示可前往 Ultralytics 官方模型文档查看更多视觉模型与应用。就本仓库而言更合适的路径是直接阅读上述三个 YOLO 示例的源码理解检测显示与视觉伺服两种模式的区别后自行扩展。六、源码级要点汇总主题关键实现位置要点关节校准各示例脚本顶部JOINT_CALIBRATION[关节名, 零点偏移, 比例系数]按硬件实测修改P 控制p_control_loop/move_to_zero_position50Hz、kp0.5输出cur kp*error退出先回启动位解析 IKinverse_kinematics函数SO101Kinematics 类l10.1159、l20.1350含关节偏移补偿与工作空间约束双臂2_dual_so100_keyboard_ee_control.py/dev/ttyACM0/dev/ttyACM1双臂独立映射与状态视觉3_so100_yolo_ee_control.py 及其两个变体YOLOE 开放词汇检测显示与控制独立线程跟随版需标定像素映射系数七、从入门到进阶的建议路线结合 软件索引 的官方指引SO100/SO101 手臂的推荐学习路径为示例 0逐关节测试电机与限位完成校准建立关节空间直觉示例 1切换到末端执行器笛卡尔控制掌握 IK 遥操作手感示例 2升级到双臂协同为后续双手任务做准备示例 3含两个变体引入视觉感知从看到跟随逐步实现闭环完整系统进阶到 XLeRobot 整机的键盘示例 4、Xbox示例 5与 Joycon示例 7遥操作。所有示例在正确连接与校准后均可直接运行若遇到 USB 权限问题请检查当前用户是否具有访问/dev/ttyACM*的权限通常需要加入dialout用户组。【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表