Concept for 6-axis robot
-
Hello,
I plan to use a duet3 6HC togehter with a 6-axis ABB robot. In a first stage, the robot will be the "master" , reads the G-Code, plans and executes the trajectories, the duet3 controls the extruder and heatbed.I planned to send G-Code commands as HTTP Requests from the robot to the Duet3, but unfortunately the HTTP protocol is not supported by the robot controller (only socket comm).
Plan B is to exchange the following signals between the duet3 and the robot:
Robot->Duet3:
Extruder Motor cmd On/Off - DI
Heatbed cmd On/Off - DI
Extruder Heating cmd On/Off - DI
Extrusion speed cmd - Analog In
Heatbed temp - Analog In
Extruder Heating temp - Analog InDuet3->Robot
Temp Heatbed Ok -DO
Temp Extruder Ok - DO
Extrusion state On/Off - DOThe robot controller sets the heatbed + extruder temperature and gives the command to start heating, as soon as the feedback comes that the temperatures are ok, the robot can start moving and extruding by setting the corresponding Extrusion speed and extrusion On Command.
I would need 3 DI, 3 DO and 3 AI on the Duet3.
Any suggestion how to achieve this (or a better solution maybe?) with a minimum amount of FW changes?
Thanks
Giuliano -
@giuliano said in Concept for 6-axis robot:
I planned to send G-Code commands as HTTP Requests from the robot to the Duet3, but unfortunately the HTTP protocol is not supported by the robot controller (only socket comm).
You can turn on Telnet and then make a socket connection and send GCODE.
Take a look at THIS THREAD for more information on how to do that.
-
@alankilian: I set up the robot controller as socket client and could connect to the duet3, send G-Codes and get the answer.
As the movements are executed by the robot, whereas the extruder is controlled by the Duet3, If I forward all Exx and Fxx parameters over Telnet, do you think the transmission delay and refresh rate will have an impact on the synchronization and finally on the print quality?
Thanks a lot for your help!
-
@giuliano said in Concept for 6-axis robot:
As the movements are executed by the robot, whereas the extruder is controlled by the Duet3, If I forward all Exx and Fxx parameters over Telnet, do you think the transmission delay and refresh rate will have an impact on the synchronization and finally on the print quality?
I think this will result in poor print quality if the extruder movements are not synchronized with the robot movement.
Maybe if you do very small line-segment moves things will be OK, but without these two sets of motions staying very well synchronized I don't think it will come out well.
Well, it depends on what you are doing. If you're extruding hot-glue or spray-foam it'll probably be fine, but trying to do a traditional FDM print with traditional filament and a traditional hot-end probably won't work well.
Why? Well, imagine the PRECISE position of the tip of the extruder attached to the robot arm vs. time. It's going to start off at the initial point, accelerate at some rate to some speed, move for some time, decelerate at some rate and finally stop at the terminal position. The extruder needs to know EXACTLY when the extruder starts moving and to slowly increase the rate of extrusion until the extruder hits its target velocity, then switch to constant extrusion rate, then EXACTLY as the extruder starts to decelerate, the extruder needs to reduce the amount of extruding, landing on zero at the terminal-end of the move. Guessing this varying rate ahead of time may be possible with enough simulation of the robot arm movement profiles, but just doing a constant extrusion rate will result in overextrusion at the beginning and end of the move and underextrusion in the middle. You can fiddle and get one of the two to be pretty close at the expense of the other.
It's a difficult thing you're trying to build, can you give us some more details and maybe we can suggest some more things?
-
@alankilian I see your point.
Well, the planned setup is simple. The ABB Robot, interprets the G-Codes commands (using ABB's 3DP Powerpack) and executes the movements. The synchronization between the robot and the extruder could be done using the TCP-speed (with configurable preset time, available as Analog Out or sent on ethernet using socket).
ABB's dispensing instructions would take care of handling the extruder activation/deactivation time to ensure proper synchronization.On the Duet3 I would use the extruder stepper out, HotEnd temperature regulation, Hotbed temperature regulation and Fans.
My original plan was to feed the extruder speed directly using an analog input, and control the HotEnd/HotBed/Fans through G-Codes via ethernet.
What do you think about this concept?
As I understand an IO can be configured to read an analog in (for example for Z-probe), but how to bind this input to the extruder speed with minor FW changes (if any) on the Duet? -
@giuliano If you can get the ABB to produce an analog signal proportional to the extrusion speed it might work if you get an analog-in stepper motor speed controller and drive the extruder motor directly from the ABB robot arm.
-
Well, it would be a shame to add another drive having 6 HC drives on the board..
Unfortunately I selected and bought the Duet3-6HC based more on the electrical requirements (motor power, temp sensors, FETs..), assuming that doing the SW-connection between an analog-in and the servo speed would be easier. I guess I overestimated my C++ skillsCan someone point me out how this connection could be implemented? Any input is welcome.
Basically, one analog in (temp or zprobe ? 0..10V would be ideal) should directly drive the extruder stepper speed (0..xxx rpm)
For all other settings I would use G-Codes over telnetThanks a lot!
-
-