Difference between revisions of "3. Interfacing with the Actual Allegro Hand"
Alexalspach (Talk | contribs) |
Alexalspach (Talk | contribs) |
||
Line 152: | Line 152: | ||
{|style=" border-collapse: separate; border-spacing: 15; border-width: 2px; border-style: solid; border-color: #CCCCCC; padding: 0px; text-align: left; width: 450px" | {|style=" border-collapse: separate; border-spacing: 15; border-width: 2px; border-style: solid; border-color: #CCCCCC; padding: 0px; text-align: left; width: 450px" | ||
|- | |- | ||
− | | style="padding: 3px 5px 3px 5px; width: 150px; background: # | + | | style="padding: 3px 5px 3px 5px; width: 150px; background: #666666" | <h5> </h5> |
| style="padding: 3px 5px 3px 5px; width: 150px; background: #F0F0F0" | <h5>NI CAN</h5> | | style="padding: 3px 5px 3px 5px; width: 150px; background: #F0F0F0" | <h5>NI CAN</h5> | ||
| style="padding: 3px 5px 3px 5px; width: 150px; background: #F0F0F0" | <h5>Softing</h5> | | style="padding: 3px 5px 3px 5px; width: 150px; background: #F0F0F0" | <h5>Softing</h5> |
Revision as of 15:43, 2 November 2012
In the last tutorial, 2. Allegro Hand Joint Position Control, we developed a controller that commands the joints in a sinusoidal fashion. While any motion can be established at this point, we will show this same motion in the actual Allegro Hand to demonstrate the ease of developing a controller for use with both the virtual and actual Allegro Hand systems.
This tutorial assumes you have completed both of the previous tutorials, 1. Setup: DLL Project, Control XDL & the AHAS Lua file and 2. Allegro Hand Joint Position Control. Also, this tutorial assumes that you have one of the four stock supported CAN devices
Contents |
Lua File
Navigate to the Allegro Hand Application Studio (AHAS) controls directory and locate the file called ERHAND_NI-CAN_LEFT.
C:\Program Files (x86)\SimLab\Allegro Hand Application Studio\bin\controls
Find the Lua file called ERHAND_NI-CAN_LEFT.lua and copy it to your Desktop. Rename the file ALLEGROHAND1_ACTUAL.lua. Open ALLEGROHAND1_ACTUAL.lua to see the following code.
function Awake() print("Begin Allegro Hand") version() -- If you just want to simulate, comment "rtTimer" and "createRTSystem" -- and uncomment loadModel -- to change CAN interface, change "createRTSystem" line --loadModel("hand", "models/Etc/ERHand/ERHand.aml") rtTimer = createTimer("RTTimer", rTimer_MODE_REAL_WIN32) print(rtTimer) createRTSystem("models/Etc/ERHand/ERHandL_RT_NICAN.aml", "RTSys", rtTimer) createController("RTController", "RTSys") --, 1, "controls/control_ERHand.xdl", "") setControlAlgorithm("RTController", "controls/control_ERHandL.xdl") --setNominalSystem("HandController", "") end function Update() -- body end BH_READY = RCMD_USER + 2 CAN_CMD_RESET_ENC = 4 function OnGUI() if (GUIButton(5, 5, 120, 25, "On")) then onDevice("RTSys", "COMM") sendCommand("RTController", RESERVED_CMD_SERVO_ON) end if (GUIButton(130, 5, 120, 25, "Off")) then --offDevice("RTSys", "COMM") --sendCommand("RTController", RESERVED_CMD_SERVO_OFF) sendCommand("RTController", RCMD_USER + 0) print("None") end if (GUIButton(5, 35, 120, 25, "Home")) then sendCommand("RTController", RCMD_GO_HOME, VK_H) print("Home button pressed") end if (GUIButton(130, 35, 120, 25, "Ready")) then sendCommand("RTController", BH_READY, VK_R) print("Ready button pressed") end if (GUIButton(5, 65, 120, 25, "GRASP 3")) then sendCommand("RTController", RCMD_USER + 3, VK_G) print("Grasp 3 button pressed") end if (GUIButton(130, 65, 120, 25, "GRASP 4")) then sendCommand("RTController", RCMD_USER + 4) end if (GUIButton(5, 95, 120, 25, "PINCHING(I)")) then sendCommand("RTController", RCMD_USER + 5, VK_P) print("Pinching button pressed") end if (GUIButton(130, 95, 120, 25, "PINCHING(M)")) then sendCommand("RTController", RCMD_USER + 6) end if (GUIButton(5, 125, 245, 25, "Envelop")) then sendCommand("RTController", RCMD_USER + 8) print("Envelop") end if (GUIButton(5, 155, 245, 25, "Show Off")) then sendCommand("RTController", RCMD_USER + 50) print("Show Off") end if (GUIButton(5, 185, 120, 25, "Test Encoders")) then for i=1,16 do encName = "enc"..i if i == 1 then print(" ") print("Finger 1") end if i == 5 then print(" ") print("Finger 2") end if i == 9 then print(" ") print("Finger 3") end if i == 13 then print(" ") print("Finger 4") end deviceCommand("RTSys", encName, CAN_CMD_RESET_ENC) --print("Test Encoders") end end if (GUIButton(130, 185, 120, 25, "Test Motors")) then sendCommand("RTController", RCMD_USER + 99) print("Test Motors") end width = (ScreenWidth-10)/4 --print(width) top = ScreenHeight - 35*5; for i=1,4 do for j=1,4 do context = "Finger"..i.."_Link"..j pos = jointPosition("RTSys", context) context=context..string.format(": %.3f",math.deg(pos)) GUILabel(10 + (i-1)*width, top + 35*(j-1), width-10, 15, context) GUISlider(10 + (i-1)*width, top+ 15 + 35*(j-1), width-10, 16, math.deg(pos), -180, 180) end end end
The line below loads the NI-CAN interfacing Allegro Hand model. We must change this to reflect the hand (left/right) and the CAN interface (NI/Softing/ESD/Kvaser) that are using. Please refer to the following table to determine with what model you must replace "ERHandL_RT_NICAN.aml".
createRTSystem("models/Etc/ERHand/ERHandL_RT_NICAN.aml", "RTSys", rtTimer)
|
NI CAN |
Softing |
Kvaser |
ESD |
Right |
stuff | stuff | stuff | stuff |
Left |
stuff | stuff | stuff | stuff |
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |