Open dlarue opened 11 months ago
I gave up on the CRS F3 because it wasn't mechanically up to the CNC cutting tasks I hoped it to perform. Also the approach I was pursuing with ROS was fairly difficult.
Nowadays I think a more interesting path would be to probe & reverse engineer the differential serial bus communication between the C500 controller and the arm servos. Then it could be hooked to LinuxCNC control directly, bypassing the rather slow and peculiar operating system running on the box.
From what I can gather from the Internet on what the original design purposes were it was more for repeating processes in a lab so I can see why it wouldn't be up to the forces seen in CNC milling of anything but foam and lightweight woods. ROS can be a handful too.
Interesting thought on getting into the comms directly with the robot as opposed to the controller. I don't yet know about the joint hardware on the robot but if each more like a servo than a unique motor and encoder it would make connecting to LinuxCNC easier. Thanks for the feedback. With the Remora project LinuxCNC is getting a bit more attention these days with the compatible 3DP boards it runs on being inexpensive and with LinuxCNC on the rPi.
At least with F3, the arm has all servo controllers integrated and communicates over a serial bus.
So it would be a matter of figuring out some interface between LinuxCNC and that serial bus, and then writing HAL component to send the target position & get feedback position. A Mesa Electronics FPGA card could probably be used for the purpose.
It appeared that the F3 and A465 were released soon after one another so the differences could be minor and since they use the same controller maybe even the joint communications is similar. The company was sold a couple of times and the robot products discontinued but sadly it does not appear any of them released the source code to their CROS which would make porting the controller to another hardware much easier.
The Mesa FPGA cards had been the standard for getting LinuxCNC on various CNC machines and while it was usually a ~$500 hardware purchase their addition of ethernet contol interface( instead of parallel port ) opened things up. Scott Alford's Remora firmware installed on a COTS 3D printer board opened LinuxCNC up to the desktop NC machine market. The use of COTS 3D printer boards was because they had the stepper motor drivers onboard for things like 3D printers, laser cutter/engravers and desktop router machines. The firmware supports encoders like the Mesa boards too. But it sounds like this is more a serial communications thing with the motor drivers and encoders already handled by each joint control board so there should be little in the way of hardware needed between the LinuxCNC machine and the robot.
The robot is waiting for me to pick up so I've only been able to do online research so far.
Hmm, based on manual it appears A465 has the servo controllers in the control box:
Two cables connect the robot arm to the controller: the feedback (or signal) cable with the 57 pin connector at each end and the motor power cable with the 24 socket connector at the controller end.
Whereas F3 has this in manual (though I somehow am in the belief that the unit I have has electrical, not optical data connection):
Ah, and C500C manual has pinout for A465 on page 65:
It would have been nice if this robot was the F3 as far as setting up LinuxCNC goes. With what looks like DC motors(only +/-) and 3 phase encoders all brought out of the robot for each joint then it means a custom driver board to even think of getting LinuxCNC involved. I'll open up the C500C and see if each joint driver is on a backplane or something like an integrated drivers/encoders boards which could be interfaced with at TTL levels.
What's interesting that both units, the F3 and the A465 use the C500C controller so it's odd so much hardware would be in the F3. Or there are different sub versions of the C500C for the different robot arms. Thanks for digging into the docs and pointing these things out.
I think at a slightly reduced speed (40V instead of 70V), one could wire Mesa 7i54 pretty much directly to the connectors. 6x DC motors, 6x differential encoders.
But yeah, it's entirely possible there is something that could be reused inside the C500 box. The manual says:
The MCE is the platform on which arm motion and I/O are calculated and controlled. It runs on the 60 MHz TMS320C31 digital signal processor from Texas Instruments. A real-time kernel schedules periodic critical tasks such as trajectory planning, servo control (of the A255 and A465 arm axes) and F3 servo network communications.
So it seems the servo control functions run on the same DSP (separate from the 486 application processor) that exists on F3.
The main PCB does have few slots for daughterboards and a few hugely wide connectors to aux board:
I added some old but previously not uploaded photos here: http://jpa.kapsi.fi/stuff/other/crs_robot/f3_pcb_images/
The Mesa board might not work since it's only rated at 40V/3A but I saw somewhere 3 of the motors run at 70V/5A and the others 70V/3A so lower voltage would require 40% drop in voltage would equate to an increase in current to get the same power( 7A ). There are probably high voltage/current hbridges available though.
It does make sense that they use a DSP for the realtime work and the 486 for the application/UI processing. Maybe the C500C shipped with the A465 has different daughter boards on it than the F3 since it has joint controller/driver boards which the A465 doesn't.
Thanks for posting the pics, I will have a look at them. Whoa, you got an X-ray of the PCB! Nice!
It's not really x-ray, just image editing of photos from two sides :)
But hmm yeah, I didn't notice the current ratings. Might need something more powerful for the 3 main motors. For DC motors, current = torque, voltage = speed; the F3 was scary fast at full speed so I wouldn't be worried about the voltage, but with only 3A current it might not be able to lift much weight.
I came across an A465 robot arm with C500C and Pendant and have started looking for ways to use this with a Linux based system connected to the controller. This is how I found this repo. I recently found that the CRS F3 also uses this controller and there seems to be more information on the Internet targeting that machine.
If you know of any other portable and/or non-Windows based tools for this controller and have the time to point me to them that's be helpful and appreciated.