I'm looking for a way to turn RO[3] on whenever DI[6] is on. I don't have BG logic. I know I can make an autoexec program to handle it, but it seems like there should be an easier way. Am I missing something? RJ3iB controller.
Posts by TitusLepic
-
-
If you have your robot on the network, FTP. This thread has instructions on how to set up an FTP connection to your robot: https://www.robot-forum.com/robotforum/fan…61288/#msg61288
-
You may be able to get your current model to work - I can't tell from the picture how the torch is supposed to mount so this may or may not work. Open the measure tool, for "From" select the robot, select faceplate; for "To" select the tool, select entity and face center and click on the face that mates to the faceplate. Set all your distances to 0.
-
Thanks, I hadn't thought about doing it that way.
The more I learn about these robots, the more I think I'm going to need to learn Karel eventually.
-
I assign Cartesian PR values to UFrame all the time. The problem is going the other way, trying to save a UFrame to PR. Regardless of what representation the PR was originally saved in, PR[8]=UFrame[1] (or PR[8]=$MNUFRAME[1,1]) always results in PR[8] being saved as a matrix representation of the UFrame. I.e, instead of xyzwpr or joint angles, it's saved as NX NY NZ OX OY OZ AX AY AZ LX LY LZ.
-
I'm trying to save a UFrame into a PR with the statement PR[8]=UFrame[1]. The problem is that the robot is saving it in matrix form, I need it in cartesian. From this post https://www.robot-forum.com/robotforum/fan…74370/#msg74370 it looks like I should be able to set $PR_CARTREP to true to solve the issue, but I can't find that variable in my controller (RJ3iB). How else can I get my UFrame saved to a PR?
-
One way of doing it would be to use indirect addressing for the 6 variables you're recording. I.E,
R[1]=1
R[2]=80
lbl[1]
if R[1] =20, JMP LBL[20]
R[1]=R[1]+1R[R[2]]=Something-Something
R[2]=R[2]+1
R[R[2]]=Something-Something
R[2]=R[2]+1
.
.
.jump lbl[1]
lbl[20] -
I'm not too sure how vision works and is set up, since I've never used it. As long as all points are relative to the same origin, this will work. If each camera's points are relative to that camera and the camera doesn't know where it is relative to the origin, then yes, you'd have a add each camera's location to its offset in order to get coordinates to work from.
-
If (x10,y10) is your zero point of camera 1, (x20,y20) is your zero point of camera 2, (x11,y11) is your recorded point of camera 1, and (x21,y21) is your recorded point of camera 2, the difference in angle will be arctan((y20-y10)/(x20-x10) - arctan((y21-y11)/(x21-x11)
-
Quote
I've had some success using Taylor expansion...
Brilliant. This is going to help me a lot, thanks.
-
From a math standpoint, the angle is arctan((y2-y1)/(x2-x1)). I think that to implement that on the robot, you'll need either the math option or to use Karel.
-
You could call a program to make a circle and pass the diameter and speed to it as arguments, then use tool offsets to generate the circle.
For example:!Pass diameter as argument 1, divide by 2 to get radius
R[1]=AR[1]/2
!Pass movement speed as argument 2
R[2]=AR[2]
!Copy the current TCP to PR[1]
PR[1]=LPOS
!Zero PR[2] through PR[5]
PR[2]=PR[2]-PR[2]
PR[3]=PR[3]-PR[3]
PR[4]=PR[4]-PR[4]
PR[5]=PR[5]-PR[5]
!Store your offset (radius) in PR[2] through PR[5]
PR[2,1]=R[1]
PR[3,2]=R[1]
PR[4,1]=R[1]*-1
PR[5,2]=R[1]*-1
!Move from center to start point
L PR[1] R[2]mm/sec FINE Tool_Offset,PR[2]
!You'll probably want to put in code to start welding here
!Circular motion
C PR[1] Tool_Offset,PR[3]
PR[1] R[2]mm/sec CNT75 Tool_Offset,PR[4]
C PR[1] Tool_Offset,PR[5]
PR[1] R[2]mm/sec CNT75 Tool_Offset,PR[2]I'm not an expert and I'm sure there's probably some bugs in what I just wrote (I don't have a controller or roboguide in front of me to test it on), but hopefully this helps you out. I use a similar program for routing circles.
-
We have a bar code scanner set up over RS-232 but I'm not sure how it's set up and I don't have the Karel source files. Is there any way to decompile a .pc program?
-
-
(32)SRVO–050 SVAL1 CLALM alarm (Group : i Axis : j)
(Explanation) The disturbance torque estimated by the servo software
is abnormally high. (A collision has been detected.)
(Action 1) Check that the robot has collided with anything. If it
has, reset the robot and jog–feed it to recover from the
collision.
(Action 2) Make sure that the load setting is correct.
(Action 3) Check that the load weight is within the rating. If it
is higher than the rating, reduce it to within the rating.
(If the robot is used out of its usable range, the
estimated disturbance torque becomes abnormally
high, possibly resulting in this alarm being detected.)
(Action 4) Check the phase voltage of the three–phase input
power (200 VAC) to the power supply module. If it
is 170 VAC or lower, check the line voltage.
(Action 5) Replace the power supply module and the servo
amplifier module. -
Sergei - TP if possible, I've never worked with Karel but I'm willing to learn it if I have to.
Nation - String registers would be great, but my robot is a RJ3iB and doesn't have them. -
I'm writing a group of programs that are all going to share the same 35 lines (or so) of logic. I'd like to put this in a subroutine, but this subroutine would have to be able to call a search program specific to the calling program. I.e, if calling_prog_1 calls logic_subroutine, logic_subroutine should then call search_program_1. If calling_prog_8 calls logic_subroutine, logic_subroutine should call search_program_8. I wish I could pass the search program name from the calling program, but as far as I know, argument registers only work with numbers. I could put a select statement (select r[1] = 1, call search_program_1; =2, call search_program_2; etc), but it seems like there's probably a better solution than that.
-
I have my DO[100-108] set to Rack 0 Slot 0 Start 1.
I have my UI[2] set to Rack 0 Slot 0 Start 2.From what I'm understanding, DO 101 should trigger UI[2]. Instead, UI[2] is showing as an invalid port assignment.
-
This makes sense. I can set it up in roboguide. On the actual robot though, I can set the DO to Rack 0 Slot 0 with no errors, but when I set the UOP to Rack 0 Slot 0 I get an "Invalid port assignment" message.
-
Not sure if this has anything to do with it, but I found a variable group that looks like it might be related? $IO_UOP_CFG
Current settings:
1 $UOP_TYPE 1
2 $IN_RACK -1
3 $IN_SLOT -1
4 $IN_STRTPT -1
5 $OUT_RACK -1
6 $OUT_SLOT -1
7 $OUT_STRTPT -1