🎯 农业除草机器人仿真 (贴地拔除物理矫正版)
▶ 运行代码
🛑 停止运行
↺ 场景复位
🐍 自动除草控制脚本
环境加载中...
import time robot.log("--- 启动贴地根部除草系统 ---") # 重新计算的精确 IK (逆运动学) 角度 # grab_angles 可以确保夹爪末端刚好抵达 Y=0 的地平线位置 weeding_tasks = [ { "id": 1, "dist": 3.0, "side_angle": 90, "desc": "较远(2.2m)", "hover_angles": {1: 41, 2: 80, 4: 59}, "grab_angles": {1: 62, 2: 78, 4: 40} }, { "id": 2, "dist": 3.0, "side_angle": -90, "desc": "略远(2.0m)", "hover_angles": {1: 35, 2: 91, 4: 54}, "grab_angles": {1: 57, 2: 90, 4: 33} }, { "id": 3, "dist": 3.0, "side_angle": 90, "desc": "极远(2.3m)", "hover_angles": {1: 45, 2: 73, 4: 62}, "grab_angles": {1: 65, 2: 72, 4: 43} }, { "id": 4, "dist": 3.0, "side_angle": -90, "desc": "偏远(2.1m)", "hover_angles": {1: 38, 2: 86, 4: 56}, "grab_angles": {1: 60, 2: 84, 4: 36} } ] # 安全收车姿态 safe_j2 = 30 safe_j3 = 70 safe_j5 = 0 for task in weeding_tasks: robot.log(f"\n▶ 前往第 {task['id']} 处杂草 [{task['desc']}]...") await robot.move_car("FWD", task["dist"]) direction = "左侧" if task["side_angle"] > 0 else "右侧" robot.log(f">> 转动底座对准...") await robot.move_arm(0, task["side_angle"]) # 1. 悬停在杂草正上方 robot.log(">> 悬停于目标正上方...") await robot.move_arms(task["hover_angles"]) # 2. 探入地平线 (精准锁定根部) robot.log(">> 大臂下压贴地,夹爪探入植物根部...") await robot.move_arms(task["grab_angles"]) # 3. 闭合夹爪 (牢牢夹住贴地根茎) await robot.gripper("CLOSE") # 4. 直立拔起 robot.log(">> 连根直立拔起...") await robot.move_arms(task["hover_angles"]) # 5. 转身向后 await robot.move_arm(0, 180) # 6. 后方放置 robot.log(">> 于车尾后方空地垂直放置...") await robot.move_arms({1: 35, 2: 91, 4: 54}) # 7. 张开释放 (顺重力落地) await robot.gripper("OPEN") # 8. 收回机械臂 await robot.move_arms({1: safe_j2, 2: safe_j3, 4: safe_j5}) await robot.move_arm(0, 0) robot.log("\n✅ 物理贴地除草完成!根部抓取极其精准,无虚假吸附。")
🔧 状态:
待机
🖐️ 夹爪:
张开