Difference between revisions of "3. Interfacing with the Actual Allegro Hand"
Alexalspach (Talk | contribs) |
Alexalspach (Talk | contribs) |
||
Line 4: | Line 4: | ||
− | ==Lua File== | + | ==AHAS Lua File== |
Navigate to the Allegro Hand Application Studio (AHAS) controls directory and locate the file called ''ERHAND_NI-CAN_LEFT''. | Navigate to the Allegro Hand Application Studio (AHAS) controls directory and locate the file called ''ERHAND_NI-CAN_LEFT''. | ||
Line 171: | Line 171: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | For this tutorial, I am using NI can and a left Allegro Hand so I will leave this line as-is. | ||
+ | |||
+ | Next we must link this new LUA file to the ''control_AllegroHand.xdl'' we made in tutorial 1. | ||
+ | |||
+ | <pre> | ||
+ | createController("RTController", "RTSys") --, 1, "controls/control_ERHand.xdl", "") | ||
+ | setControlAlgorithm("RTController", "controls/control_ERHandL.xdl") | ||
+ | </pre> | ||
+ | |||
+ | These two lines must be changed to the following so that the AHAS can evoke our new controller. | ||
+ | |||
+ | <pre> | ||
+ | createController("RTController", "RTSys") --, 1, "controls/control_AllegroHand.xdl", "") | ||
+ | setControlAlgorithm("RTController", "controls/control_AllegroHandL.xdl") | ||
+ | </pre> | ||
+ | |||
+ | Now move the file ''ALLEGROHAND1_ACTUAL.lua'' from the ''Desktop'' back into the ''controls'' directory. | ||
+ | |||
+ | ==AHAS Shortcut== | ||
+ | |||
+ | Make a copy of the AHAS shortcut on the ''Desktop'' created in tutorial 1. Right click the shortcut and click ''Properties''. Change the target as follows: | ||
+ | |||
+ | <pre> | ||
+ | Original Target: "C:\Program Files (x86)\SimLab\Allegro Hand Application Studio\bin\Allegro.exe" controls\ALLEGROHAND1.lua | ||
+ | New Target: "C:\Program Files (x86)\SimLab\Allegro Hand Application Studio\bin\Allegro.exe" controls\ALLEGROHAND1_ACTUAL.lua | ||
+ | </pre> | ||
+ | |||
+ | Close the ''Properties'' window. Connect the Allegro Hand to your computer's CAN interface and turn it on. | ||
+ | |||
+ | '''''Note:''' Make sure to straighten out all of the fingers prior to running AHAS.'' | ||
+ | |||
+ | Double-click the the shortcut to test it out. An Allegro Hand simulator should load and immediately start controlling the real hand joints in the sinusoidal fashion. |
Revision as of 16:14, 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 |
AHAS 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 |
ERHand_RT_NICAN.aml | ERHand_RT_SOFTING.aml | ERHand_RT_KvaserCAN.aml | ERHand_RT_ESDCAN.aml |
Left |
ERHandL_RT_NICAN.aml | ERHandL_RT_SOFTING.aml | ERHandL_RT_KvaserCAN.aml | ERHandL_RT_ESDCAN.aml |
For this tutorial, I am using NI can and a left Allegro Hand so I will leave this line as-is.
Next we must link this new LUA file to the control_AllegroHand.xdl we made in tutorial 1.
createController("RTController", "RTSys") --, 1, "controls/control_ERHand.xdl", "") setControlAlgorithm("RTController", "controls/control_ERHandL.xdl")
These two lines must be changed to the following so that the AHAS can evoke our new controller.
createController("RTController", "RTSys") --, 1, "controls/control_AllegroHand.xdl", "") setControlAlgorithm("RTController", "controls/control_AllegroHandL.xdl")
Now move the file ALLEGROHAND1_ACTUAL.lua from the Desktop back into the controls directory.
AHAS Shortcut
Make a copy of the AHAS shortcut on the Desktop created in tutorial 1. Right click the shortcut and click Properties. Change the target as follows:
Original Target: "C:\Program Files (x86)\SimLab\Allegro Hand Application Studio\bin\Allegro.exe" controls\ALLEGROHAND1.lua New Target: "C:\Program Files (x86)\SimLab\Allegro Hand Application Studio\bin\Allegro.exe" controls\ALLEGROHAND1_ACTUAL.lua
Close the Properties window. Connect the Allegro Hand to your computer's CAN interface and turn it on.
Note: Make sure to straighten out all of the fingers prior to running AHAS.
Double-click the the shortcut to test it out. An Allegro Hand simulator should load and immediately start controlling the real hand joints in the sinusoidal fashion.
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |