-
Posts
515 -
Joined
-
Last visited
Content Type
Profiles
Forums
Gallery
Everything posted by Mr Jos
-
As I did make this machine I noticed why there aren't many 'pin' sorters, the little edges on the end of the pins and the ridges get stuck anywhere they can!! (That's why I added thick A4 paper to the sidewalls of the drum). First versions of this sorter looked way better and technical, but even the littlest tolerance in plates/bricks/tiles/liftarms made the pins catching and destroying the machine or the pin flying through the air. I think this was one of the hardest types to sort as beams/axles don't have protruding edges, but I'm not going to make an other sorter soon, and I don't have enough panels to make one for that. Progress so far in Studio. Very much been thinking to combine 3 of my machines, but don't have enough EV3 bricks/motors yet to make it work all. Highbay warehouse crane with racks, 6Degrees of Freedom robot and the sorter. Sorting lego bricks, putting them in bins, robot picking up the bin and place it on the conveyor of the warehouse, and the crane storing it in a known place, ready to be taken out again and delivered by the 6DoF.
-
[WIP] Mindstorms 51515 Plotter
Mr Jos replied to ord's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Just some wild thoughts as I don't know much about data saving, and how you could convert it, but can't you like store the X / Y / Head position in a list? Just add every X Y and the Head position at the end of that movement (or beginning, just switch around the order of motor movements) to a list. speed = 700 position_list = [581, 10, True, 583, 16, True, 585, 17, True, 587, 13, True, 587, 10, False, 594, 10, True, 594, 11, True, 596, 17, True, 598, 17, True] for x in range(len(position_list) / 3): move(position_list[x * 3], position_list[1 + (x * 3)], position_list[2 + (x * 3)]) def move(x_pos, y_pos, head_down): global speed motor_x.run_target(x_pos, speed, then=Stop.HOLD, wait=False) motor_y.run_target(y_pos, speed, then=Stop.HOLD, wait=True) if head_down == True: motor_z.run_target(500, speed, then=Stop.HOLD) else: motor_z.run_target(0, speed, then=Stop.HOLD) Position 0,3,6,9,... in the list will be the X_coordinates (Integers), 1,4,7,10,... Y_coordinates (Integers), 2,5,8,11,... head positions (Booleans True/False). If needed you can do just X/Y in the list and make head in a seperate list. This is just a basic example ofcourse, as you will need to adjust the speed of 1 of the motors to make them end at the same time, but that you'll know already how to do. -
[WIP] Mindstorms 51515 Plotter
Mr Jos replied to ord's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Very nice machine! Those last pictures are really nice. Most accurate Lego plotter I've seen so far. -
Yes indeed, it's these 2 parts; https://www.bricklink.com/v2/catalog/catalogitem.page?P=46835#T=C&C=85 https://www.bricklink.com/v2/catalog/catalogitem.page?P=46834#T=C&C=1 I have over 10K black 2L pins, and all others between 1K-5K I think. So still enough left to test. Correct, the sensor only detects RedGreenBlue color reflection. Making it impossible to see the shape. Thats why I only use the o++ as it's a 'modern' pin, and the ooo pin hasn't been in a set since 2007 I think, so no problem for newer sets. (I do have a few of them but only used them in my Perforating Press to make it look good). All other pins don't really have same length with different shape (at least not 'modern' pins).
-
Ever been dismantling one set or more, and had to sort every pin by hand? Now you can just throw them all in 1 bin, and watch them being sorted for you! The drum can hold over 5000 pins, but around 1000-1500 it starts to stall (but anti-stall is programmed, it will run the drum backwards and try again). The pins try to go as fast as possible after each other, but sometimes a pin bounces a little in the swing arm making a little delay needed. It does not sort 100% correct, as it's still a 'toy'. Pins that are scanned as 'unknown' are put in the middle bin, and you can put them back in the drum to have a next try. I have been thinking to add 1 more belt to feed these unknown pins back in the drum, to have a higher % of correct sorted, but it seems overkill. I will start making a Stud.Io file now and once finished put it with my other machinery. At this moment I don't know what my next extraordinary machine will be. I'm open for suggestions and criticism. Instructions available at: https://rebrickable.com/mocs/MOC-83411/Mr_Jos/technic-pin-sorting-machine-for-all-pins/#details
-
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Ah alright, thanks for the info didn't know it could not be programmed with VSC. 1 more reason for me to not buy anything else then EV3's (maybe RI if I ever see the need for it as it can be programmed with VSC aswell.) On a side note; The project I'm making now, Technic pin sorter is running sometimes into a bug. The motors are switched off/on very fast if 2 pins are to close to eachother to create a gap, the acceleration is set very high for good length/color detection, only the feeding belt ramps up slowly again. 1 in 100 times you can hear the quick belt not accelerating all the way to 700°/s and hesitating, and also a 1/500 chance a feeder belt does not get turned off when the color belt does(they always get both the command at the same time). When stopping the program with the brick button, also a small chance that the feeder belt keeps running slowly even though no program is running anymore at all. Only way to stop it is start running new program. (or unplug the wire) -
T-Bot (3axis gantry)
Mr Jos replied to Mr Jos's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Looking good. The clicking noice I hear in your video, I know where it's from. I've ran multiple times into it, and still don't know why, but these red 16T gears and chains don't like eachother like a normal 16T gear with chains. The clutch gear one makes clicking noices always, that's why I changed mine back to the grey ones. When jamming it into the side, these axles do like to bend a bit haha, I've had it here multiple times I jammed it to much and chains were flying everywhere through the air. I still think a part of about 12 links is hiding somewhere, but I didn't find it back after picking up pieces of chain all over the floor. -
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Yes, I use the free software; Visual Studio Code. At the top there is "File" and you can save it under a new name. Edit: Extra info for sending motor commands and not waiting for it, you can send the motor to run (certain amount of degrees), and not having to wait for it to finish by just adding wait=False. I use this for my 6Degrees of Freedom to send constantly new target points for all 6 motors at the same time (2by bluetooth, 4 on the master with wait=false.) ##########~~~~~~~~~~SEND ACTUAL MOTOR SPEED AND DESIRED POSITION~~~~~~~~~~########## def move_all_motors(axis1, axis2, axis3, axis4, axis5, axis6, sp1, sp2, sp3, sp4, sp5, sp6): yaw_base_bt_sp.send( int(max_speed)) yaw_base_bt_num.send( int(axis1 * yaw_base_gear)) pitch_base.run_target(sp2, int(axis2 * pitch_base_gear * th2_switch), then=Stop.COAST, wait=False) pitch_arm.run_target( sp3, int(axis3 * pitch_arm_gear * th3_switch), then=Stop.COAST, wait=False) roll_arm.run_target( sp4, int(axis4 * roll_arm_gear), then=Stop.COAST, wait=False) yaw_arm.run_target( sp5, int((axis5 * yaw_arm_gear) + (axis4 / roll_arm_gear * yaw_arm_gear)), then=Stop.COAST, wait=False) roll_head_bt_sp.send( int(max_speed*1.5)) roll_head_bt_num.send(int((axis6 * roll_head_gear) - (axis4 * 1) + (axis5 * 4 / roll_head_gear))) And one more, if you would want to not having the wait block in acceleration stop anything else in the program, run it in a multithread. If you call this after the previous lines I made it will start that sub-routine and meanwhile continue with the rest of the program. Put a While True: loop inside it and it will run forever in that program, and you can do other things meanwhile. ##########~~~~~~~~~~CREATING MULTITHREADS~~~~~~~~~~########## sub_find_position = Thread(target=move_all_motors) #Create an instance for multiple threads sub_find_position.start() #Start looping the thread for finding realtime XYZ position in the background (NOT USED) -
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
-
The tires are in the wrong direction in the speed build and the rest of video, but correct on the first image. (Your first video) OCD triggered :D For me personally no interesting items as I like LBG for most of my parts, and the electronics without deep programming is not for me.
-
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
I tried to make it for your case you posted before; FB = Remote() MotorA = Motor(Port.A) MotorA.control.limits(acceleration=500) # < --- works while True: pressed = FB.buttons.pressed() if Button.LEFT_PLUS in pressed: for x in range(MotorA.speed(), 710, 10): #If braking a little, and powering up again, it will start ramping up at the current speed. MotorA.run(x) #It will accelerate starting with 10°/s speed, and adding 10°/s every loop until set speed -1 step (710-10 =700°/s) if Button.LEFT_MINUS in pressed ((((or Button.LEFT_PLUS not pressed))))): #I don't know exactly how to write the part in 5 brackets, as I don't know your system, I only know EV3. break #Stop the acceleration if you hit the braking button on the remote control or stop pushing acceleration button. wait(100) #With the wait time you can make the acceleration slower or faster. if Button.LEFT_MINUS in pressed: MotorA.run(0) It should accelerate slowly when you push the forward button, and stop accelerating when releasing it, but keeps going at current speed. when hitting the braking button it should decelerate quicker then the acceleration was and go to a full stop. Only thing I'm not sure about is the break out IF statement, it should check if your not braking and still pushing the acceleration button. -
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
feeder_belt.control.limits(880, 150, 100) ##########~~~~~~~~~~MAXIMUM SPEED, MAXIMUM ACCELERATION, MAXIMUM POWER~~~~~~~~~~########## for x in range(10, 710, 10): feeder_belt.run(x) #It will accelerate starting with 10°/s speed, and adding 10°/s every loop until set speed -1 step (710-10 =700°/s) wait(100) #With the wait time you can make the acceleration slower or faster. This will give a slow acceleration in this example, total 69steps of 100ms = near 7seconds acceleration wait(10000) #It will run for 10 seconds feeder_belt.run(0) #It will decelerate at the maximim set deceleration (150°/sec here set) from 700 to 0 /150 = Near 5 seconds deceleration. -
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Yes that's correct; You can only change the settings while the controller is stopped. For example, you can set the settings at the beginning of your program. Alternatively, first call stop() to make your Motor or DriveBase stop, and then change the settings. Source: https://pybricks.com/ev3-micropython/motors.html#control (I have read the complete website from pybricks so many times to program my machines that I now know it from my head haha) -
T-Bot (3axis gantry)
Mr Jos replied to Mr Jos's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Very well done! It's a fun little thing to make and play with, I'm curious to see a video of yours working. Your bigger frames made it much easier to fit in the gears to get the rack moving at the end, but I don't have any of them (yet). Problem with a 5x7 is that nearly any gear inside will touch the edges of the frame, that was the hardest part to design for mine. All other things you did good as well like I did, 8T gear for blocking rotation etc. I did however like the 40T gear on the motors for more speed. -
Technic Pub
Mr Jos replied to jantjeuh's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
Anyone operating some cool machines for his work? I like to get to know new machines, making special things or everyday items. Have seen many already as a service technician for several companies. Some of them blow your mind if you see how a 'simple' item is made, like an IKEA basket. Metal stretching machines, robot arms, robot welders, bending machines just for a 1€ basket. -
Pybricks Q&A
Mr Jos replied to Pybricks's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
With the run_until_stalled you can give it a limited % of power, otherwise you will be giving deg/s, which to me is much more usefull. As battery % decreases a % speed will never be the same. For some machines I use a timer to calculate length etc, then it's good to know a belt is running at 700deg/s constantly. I think a Large EV3 motor tops out around 800, that's why I use 700 as it will even do that with a low battery. Medium motor is around 1000 I think. What you would do is just send a .run() command and then measure the deg/s with .speed() command. It should give the maximum speed the motor can do. More information to be found here: https://pybricks.com/ev3-micropython/ev3devices.html -
As there is not much going on here yet, and my own projects with EV3 are not working out as I would want, I'll post this video from someone who designed a 6 DOF with 1x RI. He used my program I made to be used for a 6 DOF with 2x EV3 and changed it to work without homing sensors, as it has only 6ports, each needed for a motor. With my help explaining how I build up the program, and how he could make it work and what changes would be needed. He did manage to get the forward and inverse kinematics working, allowing the 6DOF to make straight lines and smooth movements, each axis motion ending at the same time. Before he started I thought the calculating power of the RI would be to slow, but it seems to be even faster than with EV3! Cycletimes are faster allowing smaller intermediate steps. If I had a RI I would try to make this aswell to compare the EV3/RI 6DOF.
-
T-Bot (3axis gantry)
Mr Jos replied to Mr Jos's topic in LEGO Technic, Mindstorms, Model Team and Scale Modeling
True, but, it would make the moving part much bigger as the 16T gears have to go wider. Or the 40T gear has to be a 16T aswell, making it 60% slower. Gearing up on the 16T axle would be possible, but also less accurate due to play in the gears (now it's direct drive). The chains do allow some stretching, and it's pretty accurate in both directions. You can see this when moving up/down without sideways, the carrier stays in position. Now trying to make a H-bot with perpendicular chains, but for now failing, as it tears the carrier in pieces, and Lego is not good for precision guidings (pulling on 1 side and expecting the other side will follow). -
The instructions for my fast moving gantry robot (designed after a T-Bot) are now finished. It uses a surprisingly low amount of items, nearly half of them are chain links. https://rebrickable.com/mocs/MOC-80519/Mr_Jos/t-bot-gantry-3-axis-superfast-robot/#parts The end-effector can be changed with other equipment as long as it is not to heavy and to much out of center. The idea about mounting all motors on the fixed frame was nice, but hard to get it working for the last movement as it goes through so many axles. Up to the next project.
-
EDIT: Ok thanks so much, just deleted all extensions 1 by 1 untill it did start working again. Deleting VSC completely did not work as it reloaded all extensions automatically. So happy it works again. The extension giving me problems was Pylance or something. Can start programming my more 'bigger' projects again as I don't have to find the correct names again and not worry about mistakes.
-
The idea is good, but not working so well with this T-bot. It's not very stable as the linear actuator is pretty heavy, and when moving shifting the balance making the accuracy pretty bad. Certainly at higher speeds. I will try to change the T-bot in a H-bot, that should make it way more accurate, but also much bigger, where this T-bot stayed pretty small.
-
Ah that seems a good idea, will give it a try next week to make a board, not much time this weekend. Yes, a colleague mentioned the T-bot (for real world use in a future machine) and I was wondering if I could make it with Lego. And then tried to add a third movement to the end part, which was pretty hard to get done with only 2 sliding gears available where one is a worm gear and the other the smallest gear made.. Amount of chain links, no idea, if I like the final design I will make instructions and count them haha, half year ago I bought 1'000 links for 75€ on bricklink to make my conveyors for my warehouse handling system, I used some of them for this project.