这个代码很神秘自用(别点开,你看不明白的)

这篇具有很好参考价值的文章主要介绍了这个代码很神秘自用(别点开,你看不明白的)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

两部分,第一部分是作目标检测,第二部分是做控制文章来源地址https://www.toymoban.com/news/detail-536228.html

1.0 模板匹配作目标检测

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
 
src = cv.imread("E:\\qi.png")#代检测的图像
img = src.copy()
src_roi = cv.imread("E:\\roi.png")#需要检测目标的模板
roi = src_roi.copy()
# 模板匹配
res = cv.matchTemplate(img, roi, cv.TM_CCOEFF_NORMED)
# 返回模板中最匹配的位置,确定左上角的坐标
min_Val, max_Val, min_Loc, max_Loc = cv.minMaxLoc(res)
# 使用相关系数匹配时,最大值为最佳匹配位置
top_left = max_Loc
roi_rows, roi_cols = roi.shape[:2]
nx = top_left[0]+roi_cols
ny = top_left[1]+roi_rows
cv.rectangle(img, top_left, (nx, ny), (0, 0, 255), 3)#参数分别是:左上角坐标,右下角坐标,图像颜色,线条粗细。
#这个是用来画检测到目标的举行框,
mx = top_left[0]+round(roi_cols*0.5)
my = top_left[1]+round(roi_rows*0.5)
cv2.putText(img, (str(mx),str(my)), (mx, my), font, 0.5, (255, 255, 255), 3)
#显示目标中心坐标。参数分别为:原图,文字,文字坐标,字体,字体大小,字体颜色,字体粗细

# 显示图像
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow('input_image', img)
cv.waitKey(0)
cv.destroyAllWindows()

2.0 控制部分的代码

#! /usr/bin/env python
import sys
import copy
import rospy
import moveit_commander
import geometry_msgs
import tf

from moveit_commander import MoveGroupCommander

#from moveit_python import (MoveGroupInterface,PlanningSceneInterface,PickPlaceInterface)
import moveit_msgs.msg
from geometry_msgs.msg import Pose,PoseStamped
from copy import deepcopy
moveit_commander.roscpp_initialize(sys.argv)
cartesian = rospy.get_param('~cartesian', True)#dikaer coordinate

arm_group = moveit_commander.move_group.MoveGroupCommander("elfin_arm")

arm_group.allow_replanning(True)
end_effector_link = arm_group.get_end_effector_link() 
reference_frame = 'elfin_base_link'  # shezhi cankao  zuobiaoxi
arm_group.set_pose_reference_frame(reference_frame)  

arm_group.set_goal_position_tolerance(0.001)
arm_group.set_goal_orientation_tolerance(0.001)

arm_group.set_max_acceleration_scaling_factor(0.15)#shezhi 
arm_group.set_max_velocity_scaling_factor(0.15)#

arm_group.set_start_state_to_current_state()
#pose_target = arm_group.get_current_pose().pose


def pressure_detect(press):
    #这个函数是预留给深度学习模型的
    if press>25:
        up_Z()

def detect_Net(I_US):
    #这个函数是预留给检测模型的
    #这个模型会计算出莫目标中心距离图像中心的距离,然后根据这个距离判断探头的移动
    pass


def up_Z():
    #控制机械臂向上移动
    #z这个函数用于判断当超声探头压力过大时,
    object_position_info = pose.position
    object_orientation_info = pose.orientation
    pose_target = arm_group.get_current_pose(end_effector_link).pose
    waypoints = []
    wpose = deepcopy(pose_target)#复制机械臂末端但前位置和姿态
    #--------------------------------------------------------------------
    # 先向上移动
    #--------------------------------------------------------------------
    wpose.position.z = wpose.position.z+0.02#修改z轴方向的移动
    if cartesian:  
        waypoints.append(deepcopy(wpose))
    else:          
        arm_group.set_pose_target(wpose)  
        arm_group.go()
        rospy.sleep(1)
    #--------------------------------------------------------------------
    # 路径规划
    #--------------------------------------------------------------------
    if cartesian:
        fraction = 0.0   
	maxtries = 100   
	attempts = 0     
	arm_group.set_start_state_to_current_state()
	while fraction < 1.0 and attempts < maxtries:
            (plan, fraction) = arm_group.compute_cartesian_path (waypoints,0.01,0.0,True)  
            attempts += 1
            if attempts % 10 == 0:
                rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
		        
	if fraction == 1.0:
            rospy.loginfo("Path computed successfully. Moving the arm.")
	    arm_group.execute(plan)
            rospy.loginfo("Path execution complete.")
	else:
            rospy.loginfo("Path planning failed with only " + str(fraction) + "success after " + str(maxtries) + "attempts.")  
	rospy.sleep(1)


def down_Z():
    #控制机械臂向下移动,这边需要结合压力传感器和像素质量传感器判断是否该向下移动
    #考虑到压力,我们将末端向下移动的距离调整为每次5毫米
    object_position_info = pose.position
    object_orientation_info = pose.orientation
    pose_target = arm_group.get_current_pose(end_effector_link).pose
    waypoints = []
    wpose = deepcopy(pose_target)#复制机械臂末端但前位置和姿态
    #--------------------------------------------------------------------
    # 先向下移动
    #--------------------------------------------------------------------
    wpose.position.z = wpose.position.z-0.005#修改z轴方向的移动
    if cartesian:  
        waypoints.append(deepcopy(wpose))
    else:          
        arm_group.set_pose_target(wpose)  
        arm_group.go()
        rospy.sleep(1)
    #--------------------------------------------------------------------
    # 路径规划
    #--------------------------------------------------------------------
    if cartesian:
        fraction = 0.0   
	maxtries = 100   
	attempts = 0     
	arm_group.set_start_state_to_current_state()
	while fraction < 1.0 and attempts < maxtries:
            (plan, fraction) = arm_group.compute_cartesian_path (waypoints,0.01,0.0,True)  
            attempts += 1
            if attempts % 10 == 0:
                rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
		        
	if fraction == 1.0:
            rospy.loginfo("Path computed successfully. Moving the arm.")
	    arm_group.execute(plan)
            rospy.loginfo("Path execution complete.")
	else:
            rospy.loginfo("Path planning failed with only " + str(fraction) + "success after " + str(maxtries) + "attempts.")  
	rospy.sleep(1)




def Trans_motion(dist_x=0,dist_y=0,dist_z=0,link = end_effector_link):
    #这个函数用于控制机械臂在xyz三个轴方方向上的平移运动,
    #dist_x=0,dist_y=0,dist_z=0分别表示xyz三个轴的移动分量,一般来讲我们之控制其中一个方向的移动,其他方向的莫认为0
    #因此我们采用默认参数的变量,这样只要在调用该函数的时候改变其中一个参数就可以了
    #并且是控制直线运动的,因为使用自由曲线很可能会导致机械臂末端绕来绕去很麻烦
    #为了防止直线移动过程中碰到别人,所以在每次移动之前要将探头末端上向移动一定距离

    object_position_info = pose.position
    object_orientation_info = pose.orientation
    pose_target = arm_group.get_current_pose(link).pose
    waypoints = []
    wpose = deepcopy(pose_target)#复制机械臂末端但前位置和姿态
    #--------------------------------------------------------------------
    # 先向上移动
    #--------------------------------------------------------------------
    wpose.position.z = wpose.position.z+0.02#修改z轴方向的移动
    if cartesian:  
        waypoints.append(deepcopy(wpose))
    else:          
        arm_group.set_pose_target(wpose)  
        arm_group.go()
        rospy.sleep(1)
    #--------------------------------------------------------------------
    # 根据逻辑需求,判断机械臂末端下意识可向哪移动
    #--------------------------------------------------------------------
    wpose.position.x = wpose.position.x+dist_x#修改x轴方向的移动
    wpose.position.y = wpose.position.y+dist_y#修改y轴方向的移动
    if cartesian:
        waypoints.append(deepcopy(wpose))
    else:
        arm_group.set_pose_target(wpose)
        arm_group.go()
        rospy.sleep(1)
    #--------------------------------------------------------------------
    # 先向下移动
    #--------------------------------------------------------------------
    wpose.position.z = wpose.position.z-0.02#修改z轴方向的移动
    if cartesian:  
        waypoints.append(deepcopy(wpose))
    else:          
        arm_group.set_pose_target(wpose)  
        arm_group.go()
        rospy.sleep(1)
    #--------------------------------------------------------------------
    # 路径规划
    #--------------------------------------------------------------------
    if cartesian:
        fraction = 0.0   
	maxtries = 100   
	attempts = 0     
	arm_group.set_start_state_to_current_state()
	while fraction < 1.0 and attempts < maxtries:
            (plan, fraction) = arm_group.compute_cartesian_path (waypoints,0.01,0.0,True)  
            attempts += 1
            if attempts % 10 == 0:
                rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
		        
	if fraction == 1.0:
            rospy.loginfo("Path computed successfully. Moving the arm.")
	    arm_group.execute(plan)
            rospy.loginfo("Path execution complete.")
	else:
            rospy.loginfo("Path planning failed with only " + str(fraction) + "success after " + str(maxtries) + "attempts.")  
	rospy.sleep(1)


def Rota_motion(angle_x=0,angle_y=0,angle_z=0,angle,link = end_effector_link):
    #控制机械臂末端的旋转,使用shift_pose_target
    #采用了根上面平移一样的变量使用策略,
    #angle_x=0,angle_y=0,angle_z=0分别表示xyz三个轴的旋转分量
    #由于旋转不需要考虑高度,因此直接旋转。没有多余操作
    #除了使用PoseStamped描述位姿并规划外,还可以使用shift_pose_target实现单轴方向上的目标设置与规划;
    #第一个参数:描述机器人在六个自由度中实现哪一种运动,0,1,2,3,4,5分别表示xyz三个方向的平移与旋转。
    #第二个参数:描述机器人移动或旋转的量,单位为m或者弧度。
    #第三个参数:描述该运动针对的对象。
    #link = end_effector_link

    #--------------------------------------------------------
    #首先判断需要旋转哪个轴
    #--------------------------------------------------------
    if angle_x != 0 and angle_y = 0 and angle_z = 0:
        indes_angle = 3
    elif angle_x = 0 and angle_y != 0 and angle_z = 0:
        indes_angle = 4
    else:
        indes_angle = 5
    #--------------------------------------------------------
    #控制机械臂末端旋转
    #--------------------------------------------------------
    arm.shift_pose_target(indes_angle, angle, link)
    arm.go()
    rospy.sleep(1)





def pose_callback(pose):
    #这个函数是一系列的逻辑判断
    #判断到底该如何移动探头
    if 




    arm_group.clear_pose_targets()
    print("clear.............") 
    #moveit_commander.roscpp_shutdown()

def object_position_sub():
    rospy.init_node('object_position_sub_And_grasp_node',anonymous=True)
    rospy.Subscriber("/objection_position_pose",Pose,pose_callback,queue_size=1)
    rospy.spin()
if __name__ == "__main__":
    object_position_sub()






















到了这里,关于这个代码很神秘自用(别点开,你看不明白的)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 看到这个数据库设计,我终于明白了我和其他软测人的差距

    测试人员为什么要懂数据库设计? 更精准的掌握业务,针对接口测试、Web 测试,都是依照项目/产品需求进行用例设计,如果掌握数据库设计知识,能直接面对开发的数据表,更好、更精准的理解业务逻辑;有的项目中,测试人员还会参与到数据库设计的评审中 更正确的数据

    2024年02月05日
    浏览(84)
  • css元素定位:通过元素的标签或者元素的id、class属性定位,还不明白的伙计,看这个就行了!

    大部分人在使用selenium定位元素时,用的是xpath元素定位方式,因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观,更好理解一些。 css元素定位方式往往被忽略掉了,其实css元素定位方式也有它的价值;相对于xpath元素定位方式来说,css元素定位方式更快

    2024年02月11日
    浏览(36)
  • 产品代码都给你看了,可别再说不会DDD(四):代码工程结构

    这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目—— 码如云 (https://www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。 本系列包含以

    2024年02月11日
    浏览(39)
  • 局部路径规划 DWA 算法完全解析(理论推导+代码实现,包你看懂!)

    转载请注明出处,谢谢 前面学习的全局路径规划方法,Dijkstra、Best-First-Search、A*算法都属于 状态采样 (State Sampling)方法,而 DWA 局部路径规划则属于典型的 动作采样 (action sampling)方法 DWA 算法(Dynamic Window Approach)的原理主要是以一定的 分辨率 在 速度空间 (v, w) 中 采样

    2024年02月07日
    浏览(51)
  • 产品代码都给你看了,可别再说不会DDD(一):DDD入门

    这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目—— 码如云 (https://www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。 本系列包含以

    2024年02月13日
    浏览(34)
  • 【Pygame实战】变异狗大战:据说是最近还不错的小游戏,这一个个玩到表情崩坏,点开即玩,赶紧来~(Python代码搞笑版本)

    只有你想不到,没有我找不到写不了的好游戏! 哈喽。我是你们的栗子同学啦~ 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 今天小编去了我朋友家里玩儿,看到了一个敲可爱的小狗狗🐏,是我朋友养的萨摩耶啦。 心里羡慕一下下蛮。嘿嘿,但是我养肯定养

    2024年02月11日
    浏览(73)
  • 产品代码都给你看了,可别再说不会DDD(六):聚合根与资源库

    这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目—— 码如云 (https://www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。 本系列包含以

    2024年02月08日
    浏览(59)
  • 人工智能中一些看不懂的代码

    def forward(self, input: Tensor, hx: Optional[Tensor] = None) - Tuple[Tensor, Tensor]: # noqa: F811         pass forward ,它的第一个参数 input 是一个 Tensor 类型的变量,第二个参数 hx 是一个可选的 Tensor 类型变量,这里使用了 Python 3.7 引入的类型注解语法。 函数返回值类型是一个由两个 Tensor 类

    2023年04月21日
    浏览(39)
  • 代码使用手册(自用)

    1.使用方法 安装包 install Pytorch (pytorch.org) pip install -r requirements.txt (1) 数据准备 下载好需要的数据集,按照如下方式进行组织 (2) 训练模型 我们使用 checkpoints/[model_name]/model_epoch_best.pth 作为我们训练的最优模型。 首先我们需要使用可见光数据集(这里用的wildDeepfake)预训练一个

    2024年02月07日
    浏览(48)
  • 云计算-HIVE部分代码复习(自用)

    一、数据仓库的操作 1.在Hive中创建一个数据仓库,名为DB create database DB; 以上创建了一个BD库,但是这一条sql可以进一步优化,我们可以加上if not exists create database if not exists DB; 2.查看数据仓库BD的信息及路径 describe database DB; 3.删除名为DB的数据仓库 drop database if exist DB; 二、Hive数

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包