Week 17
Countdown to Final Project presentation
Wildcard week
Week assignment
- Design and produce something with a digital process (incorporating computer aided design and manufacturing) not covered in another assignment, documenting the requirements that your assignment meets, and including everything necessary to reproduce it. Possibilities include but are not limited to wildcard week examples. ✔
Weekly task proposal
At the FabLab ETSAC Coruña, we have an ABB IRB-6620 robotic arm. A HSD ES951A HSK F63 LN 8kW electrospindle is installed on its flange, which we mainly use for wood machining, foam modeling, and sometimes for playful activities such as drawing on a whiteboard or sketching with LEDs.
ABB 6620 Technical Specifications
- Model: ABB 6620
- Reach: 2.20 m
- Load Capacity: 150 kg
ABB 6620 Axis Specifications
Axis | Name | Working Area | Maximum Speed |
---|---|---|---|
1 | Rotation | +170° to -170° | 100°/s |
2 | Shoulder | +140° to -65° | 90°/s |
3 | Arm | +70° to -180° | 90°/s |
4 | Wrist | +300° to -300° | 150°/s |
5 | Inclination | +130° to -130° | 120°/s |
6 | Swivel | +300° to -300° | 190°/s |
For this week’s task, I plan to document the usage of a hot wire cutter mounted on the robot’s flange. I fabricated the cutter myself, prioritizing its compatibility with the spindle to avoid the need for disassembling it each time I want to mount the cutter. If it weren’t compatible, I would have to dismantle the spindle and recalibrate its position every time.
The cutter was manufactured in our CNC router using 16 mm thick phenolic plywood and threaded rods.
One of its side bars can rotate at its connection point with the horizontal bar, and its end is spring-actuated to maintain the correct tension on the cutting wire. This adjustment compensates for the elongation caused by the heat generated from the electrical current flowing through the wire.
This current creates a Joule effect, where electrical energy is converted into heat. I will use a 0.4 mm diameter nichrome wire. Nichrome is an alloy of nickel and chromium, capable of reaching high temperatures without oxidizing or melting. The power source for this setup is a Velleman DC LAB LABPS3005N power supply.
To control the cutter’s positioning and operate the robot in space, I will use Robots, a plugin for Rhino’s Grasshopper visual programming interface under the MIT Free License.
github visose Robots
The workflow in Robots starts by loading the libraries that define the robot’s specifications. In my case, the IRB-6620 robot is available from the Aarhus School of Architecture in Denmark.
Next, I defined the tool to simulate the robot’s positioning accurately, identifying any geometric incompatibilities. I simplified the geometric model provided by the HST spindle manufacturer in STP format and the wooden arc, increasing their overall dimensions by 25 mm as a safety margin to prevent unwanted contacts.
After mounting the tool on the robot’s flange, the maximum cutting dimensions of the hot wire cutter are 900 mm in width and 640 mm in height, although we must maintain a safe distance from these maximum values during operation.
Finally, in this initial stage, I need to establish the working envelope to limit the robot’s movement and avoid interferences within the workspace.
Hot wire cutting
Initially, I had planned to dedicate the Wildcard Week to documenting multi-axis milling with the robotic arm. For this reason, last week I prepared a mesh with the seat definition to work on it.
However, on Tuesday, my good friend Diego García Cuevas, the head of ControlMAD, published a reel showing a foam cut for the manufacturing of a flexible seat. I immediately sent him a WhatsApp message, and we explored the possibilities. He provided the characteristics of the foam he was using along with the purchase link. After evaluating the options with my instructor Luis and considering how well it could fit with the bench design. Definitely, I will use the hot wire cutter to manufacture the seats for my final project.
However, the final seats will be made from 26 kg/m³ density foam blocks that I ordered from tododormitorios, which are expected to arrive at the FabLab during the week of May 19th. The idea and the purchasing link for the foam were recommended by Diego. Initially, I will perform the first tests with expanded polystyrene.
Then, I decided to design a new shape compatible with the hot wire cutter. To shape the seat, I started with a basic envelope and drew a B-spline curve, defining its control points. Once adjusted, I prepared a strategy in Grasshopper to discretize the curve and generate a series of bumps, giving the foam seat its final section shape.
Foam Cutting Process with the Robotic Arm
Once the seat section was defined, I needed to adapt the available space around the robot to allow the movement of the arc without colliding with the rotary table positioned next to it. I could have placed the foam block on top of the table, but I found it more suitable to position it on the floor to have more vertical movement clearance. In the future, the robotic arm will be relocated to a space with greater height, but for now, I have to work with the existing conditions.
After running several tests, I decided to rotate the block 60º with respect to the line connecting the center of the robot and the center of the table. In Robots, I had to adjust the axes’ rotation to align them with the desired position as the origin.
In Rhinoceros, I positioned the foam block and the seat profile to match the angle defined in the previous step. On the floor, I placed a 4 mm extruded polystyrene sheet, on which I marked a series of guide lines to facilitate the proper placement of the foam block.
TCP Definition and Target Setup in Robots
In Robots, I need to define the position and orientation of the X, Y, and Z axes of the Tool Center Point (TCP) concerning the robot’s flange. I positioned the origin at the midpoint of the wire. Two of the axes are defined by the plane that contains the wire and the arc, while the third coordinate axis is perpendicular to that plane, all passing through the midpoint of the wire. The position and orientation of the arc follow the planes located at each waypoint, defining the target in Robots.
Input Parameters for Each Target
- Plane — Target plane
- M (Text) — Type of motion: Joint or Linear
- T (Tool) — Tool or end effector (Hot Wire)
- S (Speed) — Speed of the robot in mm/s
- Z (Zone) — Approximation zone in mm (Defines the accuracy level for the wire’s waypoint proximity)
Speed and Power Configuration
The speed depends on the material and the current, ensuring the material melts just before the wire reaches it. It is crucial to guarantee smooth movement. If the speed is too high, the wire might lag behind the arc, causing incorrect cuts. In this case, trial and error is essential. For the expanded polystyrene used in these initial tests, I defined the following parameters:
- Speed Travel: 100 mm/min
- Cut Travel: 4.5 mm/min
The power supply provides 25 V and a maximum of 3 A.
In Grasshopper, I used the Rotate3D node along with sliders to conveniently orient the positions of each point and create the targets that will define the trajectory.
Initial Positioning Strategy
First, I defined a strategy to position the wire at its starting point. This initial path is executed with the wire turned off and without placing the foam block.
When the robot stops, it becomes easy to mark the lines where the foam block should be positioned.
This ensures precise alignment with the wire’s trajectory, optimizing the cutting path and minimizing positioning errors.
Foam Block Positioning and Cutting Path Definition
Once the foam block is properly positioned, I need to prepare the cutting path for the robotic arm. Starting from the home position, I defined the following targets:
Wire approach to a safe position.
- Positioned 100 mm above the initial Z cutting height.
- Movement executed at travel speed.
Cut start point.
- Horizontal movement towards the first point of the seat profile.
- Maintains a 50 mm safety distance.
- Executed at cut speed.
Seat profile cutting.
- The curve was subdivided into 100 points to create 100 targets, ensuring a smooth trajectory.
- Executed at cut speed.
Wire exit point
- From the final point of the curve, I defined a single exit point matching the cut start position.
- This approach caused an error during the path execution, as we will see later.
Intermediate points are necessary to ensure a perfectly horizontal wire movement.If these points are not defined, the robot’s kinematics generate a curved path between the entry and exit points.
In the image below, I have updated the target points to generate the correct cutting trajectory for the hot wire attached to the robotic arm. This adjustment ensures that the wire follows a precise and continuous path when cutting the foam blocks, avoiding undesired transitions between segments.
Movement to a safe position.
- Executed at cut speed.
Return to home position.
- Movement executed at travel speed.
Path compilation and simulation
All the targets were merged in the correct order and sent to the program and simulation modules in Robots. This allowed me to visualize the robot’s position at each point and generate an animation of the wire’s movement.
Robots simulation
Hot wire cutting
The cutting process was successful, except for a minor error in the lower path. This issue can be easily resolved by adding intermediate targets between the initial and final points of the profile curve.
As soon as the foam blocks I ordered arrive, I will proceed to manufacture the nine seats for the bending bench of my final project.
Final thoughts
I was eager to document the work with the robotic arm, and the Wildcard Week turned out to be the perfect opportunity to do so. Additionally, I took advantage of this week to create the seats for my final project.
Initially, I considered a simple wooden plank as the seating surface. Later, I planned to mill a seat with a complex surface, but eventually, I believe the design I achieved not only provides comfort but also gives a completely different aesthetic to my final project.
During this week, I also made significant progress with the development of my final project: I assembled and installed the LED panel and updated the project schedule to stay on track for the public presentation on June 10th.
Files
Wooden hot wire arch Vcarve 8.5. zip
Seat profile Grashopper
Cut profile. Rapid. zip