色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何完成機械臂的運動控制模塊

大象機器人科技 ? 來源:大象機器人科技 ? 作者:大象機器人科技 ? 2023-02-10 16:07 ? 次閱讀

使用一個桌面型的六軸機械臂,在機械臂的末端安裝一個攝像頭,來進行人臉識別和跟蹤的一個功能。該功能分為兩個模塊,一個是人臉識別模塊,另一個是機械臂的運動控制模塊

在前文有介紹到怎么控制機械臂的基本運動和人臉識別是如何實現的,在這里就不再復述了,本篇的內容主要是介紹是如何完成運動控制模塊的。

使用到的設備

mechArm 270 -Pi ,適配的攝像頭

poYBAGPl-0GABAlBAAFYH_5d57w716.jpg

設備的詳情可以了解前文

機械臂的運動控制模塊

接下來介紹運動控制的模塊。

控制模塊,常見的運動控制輸入的是笛卡爾空間的絕對位置,想要獲得絕對位置需要做相機和手臂的手眼標定算法,這個涉及的未知參數就有十幾個了,我們略過了這個步驟,選擇使用相對位移做運動控制,這就需要設計一套采樣運動機制,確保一次控制周期能完整地獲得人臉的偏移并實施跟蹤。

所以我想要整個功能能夠快速呈現出來,就沒有選擇用手眼標定的算法來處理相機和手臂的關系。因為手眼標定的工作量是相當龐大的。

下面的代碼是:從人臉識別算法中得到的信息來獲取參數

code


_, img = cap.read()
# Converted to grey scale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecting faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Drawing the outline
for (x, y, w, h) in faces:
if w > 200 or w < 80:?
#Limit the recognition width to between 80 and 200 pixels
continue
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 3)
center_x = (x+w-x)//2+x
center_y = (y+h-y)//2+y
size_face = w


將獲取到的 center_x,center_y ,size_face這幾個變量用來計算位置。

下面是處理數據來控制運動的算法的代碼


run_num = 20 #Control cycle of 20 frames
if save_state == False:
# Save a start point (save_x, save_y)
save_x = center_x
save_y = center_y
save_z = size_face
origin_angles = mc.get_angles()
print("origin point = ", save_x, save_y, origin_angles)
time.sleep(2);
current_coords = mc.get_coords()
save_state = TRUE
else:
if run_count > run_num: # Limit the control period to 20 frames
run_count = 0
# Recording relative offsets
error_x = center_x - save_x
error_y = center_y - save_y
error_z = size_face - save_z

# Pixel differences are converted into actual offsets, which can be scaled and oriented
trace_1 = -error_x * 0.15
trace_z = -error_y * 0.5
trace_x = -error_z * 2.0

# x/z axis offset, note that this is open loop control
current_coords[2] += trace_z
current_coords[0] += trace_x

#Restricting the Cartesian space xz range
if current_coords[0] < 70:
current_coords[0] = 70

if current_coords[0] > 150:
current_coords[0] = 150

if current_coords[2] < 220:
current_coords[2] = 220

if current_coords[2] > 280:
current_coords[2] = 280

# Inverse kinematic solutions
x = current_coords[0]
z = current_coords[2]
# print(x, z)

L1 = 100;
L3 = 96.5194;
x = x - 56.5;
z = z - 114;

cos_af = (L1*L1 + L3*L3 - (x*x + z*z))/(2*L1*L3);
cos_beta = (L1*L1 - L3*L3 + (x*x + z*z))/(2*L1*math.sqrt((x*x + z*z)));
reset = False
# The solution is only applicable to some poses, so there may be no solution
if abs(cos_af) > 1:
reset = True
if reset == True:
current_coords[2] -= trace_z
current_coords[0] -= trace_x
print("err = ",cos_af)
continue

af = math.acos(cos_af);
beta = math.acos(cos_beta);

theta2 = -(beta + math.atan(z/x) - math.pi/2);
theta3 = math.pi/2 - (af - math.atan(10/96));
theta5 = -theta3 - theta2;
cof = 57.295 #Curvature to angle

move_juge = False
# Limits the distance travelled, where trace_1 joint is in ° and trace_x/z is in mm
if abs(trace_1) > 1 and abs(trace_1) < 15:
move_juge = True
if abs(trace_z) > 10 and abs(trace_z) < 50:
move_juge = True
if abs(trace_x) > 25 and abs(trace_x) < 80:
move_juge = True

if (move_juge == True):
print("trace = ", trace_1, trace_z, trace_x)
origin_angles[0] += trace_1
origin_angles[1] = theta2*cof
origin_angles[2] = theta3*cof
origin_angles[4] = theta5*cof
mc.send_angles(origin_angles, 70)
else:
#Due to the open-loop control, if no displacement occurs the current coordinate value needs to be restored
current_coords[2] -= trace_z
current_coords[0] -= trace_x
else:
# 10 frames set aside for updating the camera coordinates at the end of the motion
if run_count < 10:
save_x = center_x
save_y = center_y
save_z = size_face
run_count += 1

在算法模塊中,獲得相對位移后如何進行手臂移動,為了確保運動效果我們并沒有直接采用mecharm提供的坐標運動接口,而是在python中添加了逆運動學部分,針對應用場景計算了特定姿態下的機械臂逆解,將坐標運動轉化成了角度運動,避免了奇異點等影響笛卡爾空間運動的因素。結合上人臉識別部分的代碼,整個項目就算是完成了。

正常來說人臉識別會對算力有比較高的要求,它的算法機制是針對相鄰像素做重復計算從而增加識別精度,我們使用的mechArm 270-Pi它的主控是以樹莓派4B 為處理器,來進行人臉識別的算力處理。

樹莓派的算力是400MHZ。我們用的樹莓派算力不足所以簡化了這個過程,把識別機制改成了只算幾次的模糊識別,在我們應用的時候就需要背景簡單一些。

總結

這個人臉識別和機械臂跟蹤項目到目前就算是做完了。

總結項目一些關鍵信息:

1 在對于低算力的情況下,設定簡單的使用場景,實現流暢的效果

2 將復雜的手眼標定算法換成選擇相對位置移動,使用采樣運動機制,確保每一控制周期能完整的獲得人臉的偏移并跟蹤

3 在python中添加了逆運動學部分,針對應用場景計算了特定姿態下的機械臂逆解,將坐標運動轉化成了角度運動,避免了奇異點等影響笛卡爾空間運動。

項目一些不足的地方:

在使用的場景有一定的要求,需要干凈的背景才能運行成功。(通過固定的場景,簡化了很多參數)

前面也有提到,樹莓派的算力是不足的,更換其他控制主板的,運行起來會更加流暢,例如用jetsonnano (600MHZ),高性能圖像處理的電腦

另外就是運動控制模塊,因為沒有做手眼標定所以只能用相對位移,控制分為“采樣階段”“移動階段”,目前盡量要求采樣的時候鏡頭是靜止的,但實際上比較難保證鏡頭靜止,就會出現在采樣的時候鏡頭同時還在運動,導致讀到的坐標會有偏差。

最后,在這里特別感謝大象機器人在項目的開發時提供的幫助,能夠讓項目完成。這次使用的mechArm是一款中心對稱結構的機械臂,在關節運動上有所限制,如果將程序運用在活動范圍更加靈活的mycobot上可能是不一樣情況。

如果你對項目有啥想要了解更多的地方請在下方給我留言。

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28618

    瀏覽量

    207912
  • python
    +關注

    關注

    56

    文章

    4806

    瀏覽量

    84933
  • 機械臂
    +關注

    關注

    12

    文章

    519

    瀏覽量

    24663
收藏 人收藏

    評論

    相關推薦

    通過檢測手臂運動控制機械

    /id_XNTkxNjgwMDg=.html這里有一個我搜到的 做得挺好的,但是我不知道怎么實現。首先要求是用PIC單片機來做檢測手臂運動控制機械。就是手臂
    發表于 12-23 11:48

    基于LabVIEW和SolidWorks改進機械的設計流程

    和移動殘骸、檢查車輛車盤和完成大部分現在使用的機器人所無法完成的其他任務。這就是約束區域機器人手臂(CARMA)開發。 CARMA機械成品  將這個項目作為提高設計流程效率并大幅擴展
    發表于 02-12 15:56

    基于LabVIEW的四自由度機械運動控制系統設計

    實行位置伺服和編碼器反饋,對直流電機利用線性電位器反饋電壓的方式實現了角度的反饋控制。借助LabVIEW8.2 的強大功能,我們得以在短時間內完成控制系統的開發,同時保證了機械
    發表于 02-12 16:10

    采用LabVIEW實現四自由度機械運動控制系統設計

    LabVIEW8.2的強大功能,我們得以在短時間內完成控制系統的開發,同時保證了機械運動精度與負載能力。四自由度
    發表于 05-06 09:26

    STM32與樹莓派交互控制機械

    (并不)常見的五自由度機械。盡管商家稱它為六自由度。這里使用STM32F407VGT6的6路PWM輸出通道來控制6個舵機的運動,樹莓派(上位機)通過USB轉TTL
    發表于 07-01 10:24

    基于單片機的三軸機械控制怎么實現

    文章目錄三軸機械控制原理三軸機械接線三軸機械
    發表于 12-13 07:14

    機械的相關資料分享

    [四]機械手臂的逆運動學解正運動學分析是已知每個關節的姿態的前提下,解算出末端執行器的姿態。而逆運動學研究的問題是,要求控制末端執行器到達某
    發表于 01-20 06:46

    基于STC8H1K28雙軸機械驅動模塊設計

    、肩關節以及上下移動關節的機械平臺可以完成這項設計。在基于STC8H1K28雙軸機械驅動模塊 給出了對肩關節、肘關節上的步進電機、角度傳感
    發表于 02-18 06:01

    機械控制學習

    機械向前運動1cm,就是運動1cm)。這種控制在涉及到接觸作業時就會產生麻煩,因為現實環境是充滿各種誤差的,位置上很小的誤差,經過大剛度的
    發表于 02-23 07:49

    六自由度機械運動規劃

    為了使六自由度機械完成特定的動作, 需要設計計算相應的指令序列. 首先計算了機械位姿與指尖位置之間的關系公式, 然后針對
    發表于 02-17 16:55 ?193次下載
    六自由度<b class='flag-5'>機械</b><b class='flag-5'>臂</b>的<b class='flag-5'>運動</b>規劃

    機械運動軌跡優化方法

    機械運動軌跡是指通過給定的路徑的起點與終點,以及機構本身或者機構運行所存在的約束條件,求出每個關節的位移S,速度v,加速a的完整過程。 文中采用笛卡爾空間的網弧插值法使得機械
    發表于 11-03 10:26 ?10次下載
    雙<b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>運動</b>軌跡優化方法

    DSP的機械預測控制

    針對機械的實時控制問題,基于約束預測控制,提出了一種機械實時
    發表于 03-26 09:33 ?1次下載
    DSP的<b class='flag-5'>機械</b><b class='flag-5'>臂</b>預測<b class='flag-5'>控制</b>

    使用Zio模塊控制機械(第4部分)

    電子發燒友網站提供《使用Zio模塊控制機械(第4部分).zip》資料免費下載
    發表于 12-30 10:15 ?0次下載
    使用Zio<b class='flag-5'>模塊</b><b class='flag-5'>控制</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b>(第4部分)

    實現使用語音控制機械運動

    使用語音控制myCobot機械運動
    的頭像 發表于 03-17 18:13 ?1315次閱讀
    實現使用語音<b class='flag-5'>控制</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>運動</b>

    【開源獲獎案例】四軸機械控制系統

    ——來自迪文開發者論壇本期為大家推送迪文開發者論壇獲獎開源案例——四軸機械控制系統。工程師采用T5L智能屏,基于DGUS軟件“旋轉指示”控件實現機械
    的頭像 發表于 12-23 08:13 ?1334次閱讀
    【開源獲獎案例】四軸<b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>控制</b>系統
    主站蜘蛛池模板: 精品久久久爽爽久久久AV| 久久精品国产亚洲AV未满十八| 精品无码一区二区三区不卡| 双腿被绑成M型调教PLAY照片| 阿离被扒开双腿疯狂输出| 免费鲁丝片一级在线观看| 中文字幕精品在线观看| 乱爱性全过程免费视频| 18禁在线无遮挡羞羞漫画| 老外的好大c的我好爽| 2020国产成人精品免费视频| 麻豆传煤网站网址入口在线下载| 最近中文字幕在线看免费完整版 | 51无码人妻精品1国产| 看全色黄大色大片免费久黄久| 中文字幕无码亚洲字幕成A人蜜桃| 久久天堂网| 97国产蝌蚪视频在线观看| 破苞流血哭泣 magnet| 疯狂小护士| 亚洲国产精品天堂在线播放| 九九免费精品视频| 999久久久国产精品蜜臀AV| 日本不卡一二三| 国产精品无码久久av| 亚洲青青青网伊人精品| 榴莲推广APP网站入口下载安装| 99热这里有精品| 入禽太深免费高清在线观看5| 国产三级在线免费观看| 一久久| 男女AA片免费| 国产成人拍精品免费视频爱情岛 | 99久久免费只有精品| 色婷婷激情AV精品影院| 国内精品久久| a视频在线免费观看| 午夜神器老司机高清无码| 久久亚洲电影www电影网| 阿力gv资源| 亚洲综合国产精品|