机械手旋转标定的数学公式实现&Halcon算子实现

//首先读取一张空白图片方便绘制坐标系

read_image (Image, 'E:/Halcon数据/资源图片/33.png')
get_image_size (Image, Width, Height)
dev_set_color ('blue')
gen_arrow_contour_xld (Arrow, 100, 100, 100, Width-100, 5, 5)
gen_arrow_contour_xld (Arrow, 100, 100, Height-100, 100, 5, 5)


dev_set_color ('red')
*400,400作为圆心 R300
Y_center:=400
X_center:=400
gen_cross_contour_xld (CrossCenter, Y_center,X_center, 60, 0.785398)

*显示初始点
Y_Begion:=100
X_Begion:=400
gen_cross_contour_xld (Cross, Y_Begion, X_Begion, 60, 0.785398)

*旋转半径   也可直接赋值R=300
R:=Y_center-Y_Begion
*旋转角度  sin cos调用弧度值 逆时针旋转为负顺时针为正
Angle:=rad(90)
gen_circle_contour_xld (ContCircle, Y_center, X_center, R, 0, 6.28318, 'positive', 1)


*显示目标点
Y_Now:=400
X_Now:=700
gen_cross_contour_xld (Cross1, Y_Now, X_Now, 60, 0.785398)

//逆时针旋转 公式:
//x1 = xcos(θ) - ysin(θ)
//y1 = xsin(θ) + ycos(θ)

//如果是顺时针方向旋转,把θ变成负的即可:

*偏移旋转公式
Y_Trans:=(Y_Begion-Y_center)*cos(Angle)+(X_Begion-X_center)*sin(Angle)+Y_center
X_Trans:=(X_Begion-X_center)*cos(Angle)-(Y_Begion-Y_center)*sin(Angle)+X_center

dev_set_color ('green')
gen_cross_contour_xld (Cross2, Y_Trans, X_Trans, 60, 0.785398)


*偏移旋转算子
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(90), X_center, Y_center, HomMat2DRotate)
affine_trans_point_2d (HomMat2DRotate, X_Begion,Y_Begion,  Qx, Qy)
gen_circle_contour_xld (ContCircle1, Qy, Qx, 10, 0, 6.28318, 'positive', 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值