相机引导机器人移动

Python 版本 (最简单、最适合视觉程序),把相机算出的 X/Y/Z 偏移 填进去,机器人就会实时往焊缝方向动

一、核心代码:相机偏移 → ROS Twist 指令

完全匹配 Servo 配置:

python

运行

复制代码
#!/usr/bin/env python3
import rospy
from geometry_msgs.msg import Twist

# ===================== 【你只需要改这里】 =====================
# 相机算出的偏移量 (单位:米,手眼标定后统一在 base_link 坐标系下)
dx = 0.0    # X 方向偏移(前后)
dy = 0.0    # Y 方向偏移(左右)
dz = 0.0    # Z 方向偏移(上下)

# 旋转偏移(焊接一般不用,保持 0)
drx = 0.0
dry = 0.0
drz = 0.0
# ============================================================

def servo_publisher():
    rospy.init_node('camera_vision_servo')
    
    # 【关键】发布到你 Servo 配置的话题:delta_twist_cmds
    pub = rospy.Publisher('/servo_server/delta_twist_cmds', Twist, queue_size=1)
    
    rate = rospy.Rate(30)  # 30Hz 频率,匹配你的 Servo 配置
    
    rospy.loginfo("✅ 相机引导 Servo 已启动,发送实时偏移指令...")

    while not rospy.is_shutdown():
        twist = Twist()
        
        # 相机偏移量 → 机器人实时速度指令
        twist.linear.x = dx
        twist.linear.y = dy
        twist.linear.z = dz
        
        twist.angular.x = drx
        twist.angular.y = dry
        twist.angular.z = drz

        pub.publish(twist)
        rate.sleep()

if __name__ == '__main__':
    try:
        servo_publisher()
    except rospy.ROSInterruptException:
        pass

二、这个代码怎么用?(超简单)

  1. 把相机算出的 base_link 下的 X/Y/Z 偏移 填进 dx/dy/dz
  2. 运行这个节点
  3. 机器人就会实时、平滑、安全地向焊缝移动

三、【工业版】:带平滑、限幅、防抖动

视觉引导必须用这个,更稳、不抖、不冲:

复制代码
#!/usr/bin/env python3
import rospy
from geometry_msgs.msg import Twist

class VisionServo:
    def __init__(self):
        rospy.init_node('vision_servo_controller')
        self.pub = rospy.Publisher('/servo_server/delta_twist_cmds', Twist, queue_size=1)
        self.rate = rospy.Rate(30)

        # 安全速度限制(米/秒),和你 Servo 配置对应
        self.max_linear_speed = 0.15  
        self.max_angular_speed = 0.2

    def limit_speed(self, val, max_val):
        """限幅,防止超速"""
        return max(-max_val, min(val, max_val))

    def run(self, dx, dy, dz, drx=0, dry=0, drz=0):
        twist = Twist()
        
        twist.linear.x = self.limit_speed(dx, self.max_linear_speed)
        twist.linear.y = self.limit_speed(dy, self.max_linear_speed)
        twist.linear.z = self.limit_speed(dz, self.max_linear_speed)
        
        twist.angular.x = self.limit_speed(drx, self.max_angular_speed)
        twist.angular.y = self.limit_speed(dry, self.max_angular_speed)
        twist.angular.z = self.limit_speed(drz, self.max_angular_speed)

        self.pub.publish(twist)
        self.rate.sleep()

if __name__ == '__main__':
    vs = VisionServo()
    rospy.loginfo("✅ 相机视觉引导伺服已启动")
    
    while not rospy.is_shutdown():
        # --- 【相机输出】 ---
        dx = 0.0  # 替换成你的相机X偏移
        dy = 0.0  # 替换成你的相机Y偏移
        dz = 0.0  # 替换成你的相机Z偏移
        
        vs.run(dx, dy, dz)

四、最重要的对应关系

Servo 配置:

yaml

复制代码
robot_link_command_frame: base_link
ee_frame_name: YB_Link
cartesian_command_in_topic: ~/delta_twist_cmds

我给你的代码:

  • 发布到:/servo_server/delta_twist_cmds
  • 坐标系:base_link
  • 单位:
  • 效果:相机算出多少偏移,机器人就往哪走

完全匹配!


五、只需要做一件事

相机输出的 XYZ 偏移量赋值给代码里的

plaintext

复制代码
dx = 相机输出X
dy = 相机输出Y
dz = 相机输出Z

机器人就实现了:

相机实时引导机器人跟踪焊缝

相关推荐
MartinYeung513 小时前
当“捕食者”沦为“猎物”:Jaredfromsubway MEV机器人被黑750万美元的技术拆解与代码修复方案
机器人·区块链
GlobalInfo14 小时前
2026年显微外科手术机器人系统市场报告:市场规模、产业研究、十五五规划与发展趋势预测
大数据·人工智能·机器人
陈天伟教授17 小时前
具身智能机器人技术专业介绍(二)
机器人·具身智能机器人技术
陈天伟教授19 小时前
具身智能机器人技术专业介绍(一)
机器人·具身智能机器人技术
物联网软硬件开发-轨物科技19 小时前
【技术白皮书】并网柜在线监测物联网解决方案 · 技术白皮书
人工智能·科技·其他·机器人
雨辰AI1 天前
RAG 知识库搭建:基于人大金仓构建信创运维问答机器人|全栈国产化落地完整版
运维·ai·机器人·ai编程
一次旅行1 天前
2026.08.16 AI产业深度解读|国产大模型全面突围,算力硬件/智能安全/人形机器人四大趋势附落地方案
人工智能·安全·机器人
一知半解仙2 天前
大国博弈与机器人纪元:我们正站在怎样的历史拐点?
大数据·人工智能·机器人
小赵AI手记2 天前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
LitchiCheng2 天前
还在改xml调相机?MuJoCo交互式可视化调整相机安装位置
xml·数码相机