手臂概念(Arm Concepts)

同步命令SynchronizedCommand

手臂和夾具命令已合併到 SynchronizedCommand 消息中。此頂級請求允許您指定移動性、手臂和抓手命令的任意組合。通過將單個命令打包成一條消息,我們保證所有命令同時到達機器人。對於沒有手臂的機器人,任何 arm_commandGripper_command 都將被忽略。
message SynchronizedCommand {
    message Request {
        ArmCommand.Request arm_command = 1;
        MobilityCommand.Request mobility_command = 2;
        GripperCommand.Request gripper_command = 3;
    }
}
ArmCommand 消息支持以下命令:

請求Requests

如果您發送的 SynchronizedCommand 只填寫了一部分消息,則只會覆蓋這些命令。例如,考慮以下偽代碼:

 Time t = 0
message SynchronizedCommand {
   message Request {
      ArmCommand.Request arm_command = stow;
      MobilityCommand.Request mobility_command = stand;
      GripperCommand.Request gripper_command = close;
   }
}

Time t = 2
message SynchronizedCommand {
   message Request {
      MobilityCommand.Request mobility_command = se2_trajectory_request;
   }
}

機器人在時間 t = 2 收到第二個請求後,將繼續執行手臂收起命令和夾具關閉命令,同時用新的 se2_trajectory_request 覆蓋 t = 0 移動站請求。

同樣,如果您在發送 FullBodyCommand 後發送部分填寫的 SynchronizedCommand,則空的 SynchronizedCommand 請求將自動填充 safe_stop 請求。

回饋Feedback

隨著在 SynchronizedCommand 中引入 ArmCommand GripperCommand 請求,我們還修改了反饋以返回三個消息,每個請求相對一個反饋消息。

ArmCommand 請求

下面列出了 7 種不同的命令,它們屬於 ArmCommand 的旗幟(banner)。手臂有 6 個關節(+ 一個抓手),可以通過直接指定關節角度來控制,或者通過指定手應該在的位置和方向(稱為姿勢)來控制。關節角度以弧度指定,"笛卡爾姿勢Cartesian poses" 以米為單位的 3D 位置指定,方向以單位四元數(quaternions)表示。

笛卡爾動作Cartesian Moves

當指定手移動到的姿勢時,用戶可以指定 2 幀,然後在這 2 幀之間進行轉換。這完全定義了機器人將其手移動到的位置和方向。

第一幀是“根”幀,它是手相對於移動的幀。此幀的常見選擇是“odom”“vision”“flat_body”幀。第二個框架是“工具幀”。如果試圖抓住某物或只是移動手臂,這通常可以保持未設置,這將默認為手幀 hand frame。然而,如果指向設備或傳感器連接到手臂的末端執行器,將工具幀設置為興趣點的變換可以允許用戶直接將傳感器移動到所需的姿勢。

舉個例子,如果我們想讓機器人用它拿著的 0.5m 棒接觸基準點的中心,我們將設置以下變換:
 root_frame_name: fiducial_001
wrist_tform_tool: {position: {x: 0.5 y: 0 z: 0} rotation: {w: -0.7071 x: 0 y: 0.7071 z: 0}}
root_tform_task: {position: {x: 0 y: 0 z: 0} rotation: {w: 1 x: 0 y: 0 z: 0}}
 

請注意,用戶還可以隨時間發送姿勢序列,指定最大速度和加速度,以及添加其他選項。有關更多詳細信息,請參閱 arm_command.proto

笛卡爾移動Cartesian move 請求還允許您為工具指定力/扭矩軌跡。對於任務幀中的每個軸,您可以選擇將軸設置為位置模式(從 SE3Trajectory 讀取所需的輸入)還是強制(從 WrenchTrajectory 讀取的輸入)。這支持機械臂的混合控制,例如,用戶可以指定 Z 為力控制,X 和 Y 為位置控制。

請參閱以下請求 ArmCartesianCommands 的示例:

關節動作

用戶可以指定一組他們希望手臂移動到的關節角度。用戶可以選擇設置每個關節允許行進的最大速度和加速度,和/或指定完整軌跡以及他們希望機器人達到這些關節角度的時間。

當將手臂移動到難以到達的位置,或嘗試通過一組預定義的姿勢使手臂擺動時,關節移動尤其有用。

有關請求 ArmJointMoveCommands 的信息,請參閱 Joint Move 示例。

預定義姿勢

用戶可以命令手臂移動到以下姿勢:Stow(手臂收起,準備走路) Carry(用於將物體搬運到某處)Ready(手臂在前面,準備操作)

如果手臂拿著東西,預定義的收起姿勢將拒絕收起。如果需要,您仍然可以向收起配置發出關節移動命令,但請注意不存在碰撞避免系統。在手臂運動過程中可能會發生物品與世界或物品與機器人之間的接觸。

請參閱 Stow/Unstow 示例以請求 NamedArmPositions

手臂速度

當使用操縱桿控製手臂時,由於延遲,發送速度命令而不是位置命令通常會更好。用戶可以在圍繞身體的圓柱形幀框中指定速度,或者使用他們自己指定的幀框。可以指定線速度和角速度。

凝視Gaze

有時,在不同位置之間移動時讓手臂連續看東西很有用。用戶可以指定目標的位置/軌跡和相機的期望軌跡。如果在末端執行器(end effector)上附加了不同的相機,則可以使用wrist_tform_tool 來指定相機的x 軸,也就是我們觀察的方向。
請注意,某些所需軌蹟的方向將被忽略,因為我們將限制相機的 x 軸始終注視目標。

請參閱 Gaze 示例以請求 GazeCommands

停止Stop

當出現問題時,發送此命令將使手臂停止。它還將對世界施加最小的力量。例如,如果手臂正在打開一扇沉重的門並且發出停止命令,則手臂會服從並讓門關閉。

拖Drag

一旦抓手握住某物,調用此命令將使手臂進入順從狀態(compliant state),讓機器人拉動重物。拖動通常會嘗試將物體保持在身體前方以獲得最大拉力。通過發送適當的運動命令使身體向後移動,機器人可以在世界各地移動重物。

移動請求Mobility Request

跟隨手臂命令FollowArmCommand

機器人的底座將根據手的位置移動,使手臂可以伸出其當前工作空間。如果要求手向前移動,則底座將開始向前行走。我們的粉筆繪圖示例利用了這種功能,其中任務是用手執行繪圖,但整個機器人都被招募來完成任務。

請參閱以下示例以請求 FollowArmCommands

手部幀框Hand Frame

API 中提供的許多 ArmCommand 請求都使用手部幀框。手部幀框的原點略位於抓手掌板的前面,並與父鏈接(手腕wrist))的方向對齊。手框架原點相對於父手腕框架的位置為: x = 0.19557 m y = 0 m z = 0 m 手部幀框和手腕之間的旋轉是單位矩陣。當使用默認值指定軌跡時,軌蹟的目標位置是這個手部幀框的原點。

避免碰撞Collision avoidance

Arm 本身沒有接近感知,因此保持安全距離至關重要。如果操作路徑上有障礙物或人,Arm 沒有防撞功能來防止接觸。安全臂操作取決於操作員和/或安全觀察員保持態勢感知並在臂有接觸物體或人的風險時停止操作。
警告:機器人手臂沒有任何避障功能。

即使機器人的車載攝像頭可以看到障礙物,如果沒有操作員的干預,手臂也無法避開它。在狹小的空間中,抓手頭可能會無意中與世界上的某些東西發生碰撞。在敏感、易碎或其他不應接觸的物體周圍操作時,應格外小心,避免與手臂碰撞。

注意:手臂確實能夠避免與自身、機器人的身體以及連接到身體的任何正確配置的有效載荷發生碰撞。

體力限制器Body force limiter

為了防止當 Arm 與世界上的某物發生碰撞時對身體施加較大的力,Arm 扭矩會自動限制以保護身體不受干擾。

安全注意事項Safety notes

臂扭矩限制不會防止對環境造成損害,不應用作安全功能。這些限制旨在降低機器人在手臂與某些障礙物碰撞時摔倒的可能性。

如果機器人在伸出手臂的情況下走進一個物體,該物體可能會損壞。

如果試圖舉起和搬運物體,力限制器可能會阻止手臂舉起太重的物體。可以在 Arm 菜單中禁用力限制器。

禁用力限制器時應小心。如果手臂接觸世界上的某物,它可能會對世界和機器人身體施加很大的力。這可能會對環境和/或機器人或手臂造成潛在的損害,並使機器人無法操作。


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組