Has anybody solved this? I'm in te same situation.
Hello, I had to install the V9_RevD or V8_RevI, reboot and then installing the newest V9_RevZC without uninstalling the RevD version. The error messages were still there but the program is running.
Has anybody solved this? I'm in te same situation.
Hello, I had to install the V9_RevD or V8_RevI, reboot and then installing the newest V9_RevZC without uninstalling the RevD version. The error messages were still there but the program is running.
I wrote a few karel programs that can be used to calculate trigonometric functions (sine, cosine, tangent, arcsine, arccosine, arctangent2), squareroot, convert cartesian POS to joint POS, and perform point transformations (converting between user frames) in TP language.
-----------------------------------------------------------
PROGRAM ARCCOS
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = ACOS(rVal)
SET_REAL_REG(regID,result,status)
END ARCCOS
-----------------------------------------------------------
PROGRAM ARCSIN
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = ASIN(rVal)
SET_REAL_REG(regID,result,status)
END ARCSIN
-----------------------------------------------------------
PROGRAM ARCTAN2
%NOLOCKGROUP
%COMMENT = 'IN1 IN2 RegID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
real1: REAL
real2: REAL
int1: INTEGER
int2: INTEGER
result: REAL
BEGIN
GET_TPE_PRM(1, 2, int1, real1, tempString, status)
GET_TPE_PRM(2, 2, int2, real2, tempString, status)
GET_TPE_PRM(3, 1, regID, tempFloat, tempString, status)
real1 = real1 + int1
real2 = real2 + int2
result = ATAN2(real1,real2)
SET_REAL_REG(regID,result,status)
END ARCTAN2
-----------------------------------------------------------
PROGRAM CONV2JOINT
%NOLOCKGROUP
%COMMENT = 'jPR cPR UF UT'
VAR
result : INTEGER
status : INTEGER
data_type : INTEGER
int_value : INTEGER
real_value : REAL
str_value : STRING[10]
dummyConfig : CONFIG
dummyArray : ARRAY[1] OF REAL
currentJPOS : JOINTPOS
cartPos : POSITION
UF_Ref : POSITION
UT_Ref :POSITION
jointResult : JOINTPOS
resultPR : INTEGER
cartPosPR : INTEGER
UF_Number : INTEGER
UT_Number : INTEGER
BEGIN
-- Retrieve TP Arguments
GET_TPE_PRM(1, data_type, resultPR, real_value, str_value, result)
GET_TPE_PRM(2, data_type, cartPosPR, real_value, str_value, result)
GET_TPE_PRM(3, data_type, UF_Number, real_value, str_value, result)
GET_TPE_PRM(4, data_type, UT_Number, real_value, str_value, result)
-- Get Robot's current JPOS
currentJPOS = CURJPOS(0,0)
-- Get Cartesian Position to Convert
cartPos = GET_POS_REG(cartPosPR,result)
UF_Ref = $MNUFRAME[1, UF_Number]
UT_Ref = $MNUTOOL[1, UT_Number]
-- Call Built-In Conversion Function
POS2JOINT(currentJPOS,cartPos,UF_Ref,UT_Ref,0,dummyConfig,dummyArray,jointResult,status)
-- Return Result to TP Position Registers
SET_JPOS_REG(resultPR, jointResult, result)
END CONV2JOINT
-----------------------------------------------------------
PROGRAM COSINUS
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = COS(rVal)
SET_REAL_REG(regID,result,status)
END COSINUS
-----------------------------------------------------------
PROGRAM SINUS
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = SIN(rVal)
SET_REAL_REG(regID,result,status)
END SINUS
-----------------------------------------------------------
PROGRAM SQROOT
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = SQRT(rVal)
SET_REAL_REG(regID,result,status)
END SQROOT
-----------------------------------------------------------
PROGRAM TANGENT
%NOLOCKGROUP
%COMMENT = 'AR[1]: Reg ID'
VAR
regID: INTEGER
tempFloat: REAL
tempString: STRING[50]
status: INTEGER
bRFlag : BOOLEAN -- GET_REG flag
rVal : REAL -- GET_REG result
iVal : INTEGER -- GET_REG result
result: REAL
BEGIN
GET_TPE_PRM(1, 1, regID, tempFloat, tempString, status)
rVal = 0
iVal = 0
GET_REG(regID, bRFlag, iVal, rVal, status)
rVal = rVal + iVal
result = TAN(rVal)
SET_REAL_REG(regID,result,status)
END TANGENT
-----------------------------------------------------------
PROGRAM TRANSFORM_UF
%COMMENT = 'iID oID iUF oUF'
VAR
inputPRID : INTEGER
outputPRID : INTEGER
oldFrameID : INTEGER
newFrameID : INTEGER
oldFrame : POSITION
newFrame : POSITION
worldPos : POSITION
oldPos : POSITION
newPos : XYZWPR
tempString : STRING[50]
tempFloat : REAL
status : INTEGER
BEGIN
GET_TPE_PRM(1, 1, inputPRID, tempFloat, tempString, status)
GET_TPE_PRM(2, 1, outputPRID, tempFloat, tempString, status)
GET_TPE_PRM(3, 1, oldFrameID, tempFloat, tempString, status)
GET_TPE_PRM(4, 1, newFrameID, tempFloat, tempString, status)
oldPos = GET_POS_REG(inputPRID, status)
oldFrame = $MNUFRAME[1, oldFrameID]
newFrame = $MNUFRAME[1, newFrameID]
worldPos = oldFrame : oldPos
newPos = INV(newFrame) : worldPos
SET_POS_REG(outputPRID,newPos,status)
END TRANSFORM_UF
Display More
-----------------------------------------------------------