很多做工业巡检或特种作业的朋友,在四足机器人(狗)常态化巡检跑通之后,基本都会面临客户提出的下一个需求:“光看不能动有什么用?配电室的刀闸、管网的手轮阀门,能不能顺手操作一下?”
这就涉及到复合移动操作(Mobile Manipulator,即四足底盘 + 机械臂)的落地。最近我和团队在某化工厂区做了一套“四足外挂 6 自由度机械臂自主巡检并开闭手轮阀门”的 POC(概念验证),底盘用的是工业级四足(类似云深处 X30 或宇树 B2 级别),臂选用的是轻量化协作臂(超轻量级一体化关节机械臂,比如睿尔曼 RM65-B)。
从实验室把 demo 搬到工业现场,坑基本都在细节里。这篇文章不讲大模型具身控制的高深概念,只讲实际工程部署中的硬件供电、手眼标定以及阀门操作的闭环控制实操。
一、 硬件供电与电气通信:别让机械臂把车载工控机“拉宕机”
移动操作最常翻车的地方在电气系统。四足机器人的动力电池一般是 48V-58V,很多工程师为了省事,直接从底盘的拓展口引出直流电给机械臂和工控机(IPC),这在实验室负载空载测试时没问题,一上真机很容易掉坑。
1. 压降与瞬态冲击
协作臂在做急加速、末端下压接触或发生堵转保护时,瞬态电流可能从平时的 2A 骤升至 10A 以上。如果机械臂供电和工控机(如 NVIDIA Jetson Orin 或工控机主板)在同一个未经隔离的电源回路里,强烈的电压波动会导致工控机瞬间低压重启。
- 落地解法:在四足电池拓展口后级加装工业级隔离宽压 DCDC 模块(例如 36-72V 转 24V/48V 稳压输出),工控机端配置小型超级电容后备电源,或者为机械臂单独设置一路高倍率放电电池组与底盘地线单点共地。
2. 线束布线与走线应力
四足机器人的背部在奔跑和踏步时存在持续的高频振动与颠簸,机械臂底座如果刚度不足,振动会直接放大传递到机械臂末端。
- 避坑细节:
- 底座转接板务必使用 7075 航空铝铣削成型,严禁用 3D 打印件作为主承力法兰。
- 线束(CANopen / 以太网以及电源线)从狗背引出进入臂身前,必须留足冗余弯曲半径,并使用高柔拖链电缆。普通网线在真机连续测试 3 天后,内部铜芯极易发生疲劳微断。
二、 手眼标定:Eye-in-Hand 在颠簸底盘上的工程解法
在 Mobile Manipulator 上,手眼标定有两种方案:Eye-to-Hand(相机固定在四足本体或机械臂基座)和 Eye-in-Hand(相机固定在机械臂末端)。
在工业现场,强力推荐 Eye-in-Hand。原因很简单:四足机器人底盘就算站立锁定,足端橡胶垫的微小弹性形变依然存在(站立姿态有数毫米的低频微晃)。如果相机在基座上,相机到目标的视距较长,轻微晃动就会导致末端定位产生巨大的绝对坐标误差。而相机在机械臂末端,可以通过“远距离粗定姿态 + 近距离伺服校准”消除底盘晃动误差。
1. 标定流程
使用标准 ChArUco 标定板固定在稳固地面,通过 ROS 2 的 easy_handeye2 工具包执行 base_link -> tool0 与 camera_optical_frame 之间的外参标定:
# 机械臂各轴保持运动学构型多样性(至少采集 15 组不同姿态)
ros2 launch easy_handeye2 calibrate.launch.py \
robot_base_frame:=arm_base_link \
robot_effector_frame:=wrist3_link \
tracking_base_frame:=camera_color_optical_frame \
tracking_marker_frame:=marker_frame
2. TF 树闭环验证
在落地时,务必将四足底盘的里程计 TF(odom -> base_link)与机械臂基座 TF(base_link -> arm_base_link)解耦。
当机械臂开始进行高精度对准时,四足底盘需要进入 Stance Lock(站立姿态锁定) 模式,同时记录此时的 TF 偏置:
import rclpy
from tf2_ros import Buffer, TransformListener
from geometry_msgs.msg import TransformStamped
def get_target_in_arm_frame(tf_buffer: Buffer, target_pose_camera: TransformStamped):
"""
将相机检测到的阀门中心位姿直接变换到机械臂 base_link 坐标系下,
跳过全局 odom 传递,避免四足里程计漂移引入误差。
"""
try:
# 获取机械臂基坐标系到相机光学坐标系的最新静态变换
transform = tf_buffer.lookup_transform(
'arm_base_link',
target_pose_camera.header.frame_id,
rclpy.time.Time()
)
# 执行坐标变换计算
# target_pose_arm = do_transform_pose(target_pose_camera, transform)
# return target_pose_arm
except Exception as e:
print(f"TF 变换查询失败: {e}")
return None
三、 自主开阀门全流程:从视觉伺服到力控闭环
开阀门的核心难点在于:工业阀门不是纯刚体,且存在虚位、初始卡涩力矩大以及旋转轴可能轻微倾斜等问题。 单纯走位置控制(Position Control)硬拧,协作臂必定因为关节过流触发急停保护。
整个执行链路通常分为四步:
[底盘导航粗停位] -> [底盘锁定+末端视觉精定位] -> [开环笛卡尔逼近] -> [力控阻抗抓取与旋转]
1. 阀门识别与位姿提取
车间的手轮阀门通常是圆盘状或十字状。利用末端 RGB-D 相机(如 RealSense D435i),在距离阀门 30-40 cm 处拍摄:
- 先用轻量化的目标检测模型(如 YOLOv8-pose)定位阀门盘面区域。
- 提取该 ROI 区域的点云,使用 RANSAC 算法拟合平面,得到阀门的法向量(旋转轴方向)。
- 在投影平面上利用最小二乘法拟合圆心,得到阀门的中心点坐标。
2. 接触阶段:基于力控的软接触
机械臂末端夹爪(或专用的双爪叉机构)在贴近阀门手轮时,机械臂必须开启末端笛卡尔阻抗模式(Cartesian Impedance Control)或六维力传感器阈值检测:
- 避坑点:不要指望视觉能把轴向距离测准到毫米级。接近阀门时,机械臂应以较低速度(如 0.02 m/s)沿法向量向前推进,监测末端 Z 轴方向的力。当接触力达到 10N 左右时,立即停止轴向推进,完成对齐。
3. 旋转阶段:圆弧轨迹与顺应性调节
这是机械臂复合操作中最容易报错的环节。阀门旋转时,如果夹爪的中心和阀门的几何中心存在 2 mm 的偏差,刚性旋转就会产生巨大的侧向剪切力。
- 工程解法:在机械臂执行绕法向轴旋转的轨迹规划时,将径向的刚度(X/Y 方向刚度)调低,使机械臂表现出“顺从性”。让机械臂在夹紧手轮后,由阀门自身的物理轴心来约束末端的侧向位移,机械臂末端只主动输出绕轴的扭矩(Torque)。
伪代码控制逻辑如下:
# 机械臂运动控制接口示例 (阻抗控制模式)
def rotate_valve(arm_controller, target_angle_rad, target_torque_limit):
# 1. 设置末端笛卡尔刚度:降低 X, Y 方向平移刚度,允许机械臂自适应阀心偏移
arm_controller.set_cartesian_stiffness(
trans_x=100.0, trans_y=100.0, trans_z=800.0, # 单位 N/m
rot_x=50.0, rot_y=50.0, rot_z=300.0 # 单位 Nm/rad
)
# 2. 分段增量式旋转(每次 15 度),监控实际扭矩
current_angle = 0.0
step = 0.26 # 约 15 度
while current_angle < target_angle_rad:
arm_controller.move_relative_twist(rz=step)
current_torque = arm_controller.get_wrist_torque()
# 初始卡涩克服与堵转保护
if abs(current_torque.z) > target_torque_limit:
print("触发力矩上限,阀门可能已到达极限行程或卡死")
break
current_angle += step
time.sleep(0.2)
四、 现场落地的 Checklist
在去现场联合调试前,建议对照以下几个细节排查:
- 底盘重力补偿联动:机械臂在大范围伸展(尤其是重载末端前伸)时,四足底盘的质心会大幅偏移。如果四足控制器没有机械臂当前的关节角前馈,狗身容易出现下沉甚至失衡。需要将机械臂的关节状态实时发给四足主控,参与底盘的全身动力学(WBC)解算。
- 奇异点规避:阀门往往安装在离地 1.2m 到 1.5m 的管道上,接近轻量臂的工作空间极限。规划路径时,不要直接从正前方去推,通常让机械臂肘部向上抬起或侧向接近,留足至少 10% 的灵巧度裕量。
- 急停联动:机械臂和四足的急停信号必须硬线并联。任何一方因碰撞保护、跌倒、超力矩切断动力时,另一方必须在毫秒级内锁定,不能出现狗倒了但机械臂还在使劲拧阀门的险情。
把 Mobile Manipulator 从发布会上的演示视频推进到工业厂区,核心在于用工程余量去应对非结构化环境的各种不确定性。供电留余量、视觉做伺服闭环、末端给足力学顺应,现场的通过率才能从“看运气”变成真正能交付的状态。
许可协议:CC BY-NC 4.0
更新于 12 小时前
觉得文章有帮助?点个赞吧!
0 条评论


