I read that you can upgrade your arduino to include a SD chip.
This would do great for the memory capability, but can you
take out the memory from the SD card and use it in the arduino?
First off, you need to understand that the Arduino (actually, the ATMega168/328) is essentially "at heart" a Harvard Architecture device, not a Princeton (or Von Neumann) Architecture like you are used to on a PC (and technically, a PC isn't a strict PA/VNA arch...).
What that means is, on the Arduino/ATMega, the code space is completely separate from the data space - it is such a design that the space for variables, vs program storage is separate.
Finally, on the Arduino, there's also a bit of memory in an EEPROM area - separate from the first two.
On the ATMega328, the size of each is: Program=32k (2k taken up by standard bootloader leaving 30k), Variable (sram)=2k, EEPROM (1k or 512 bytes - I forget which off the top of my head).
So when you say "expand the memory" - we really need to know what you are talking about.
The short answer, for a standard Arduino - is "no"; you can add storage space (think of it like a disk drive) via SD cards (or other forms of memory, like SPI/I2C accessible EEPROMs and RAM) - but doing so won't allow you to increase the size of your programs, or the amount of variable space, etc. It will just give you a separate storage area.
You could use such storage for a variety of tasks; logging data (like a temperature sensor or such) is a common one. You could also store data in such memory for later recall, provided you allocate enough room for the working area on your variable memory (sram) to receive the data to work with it.
This is a tight, low resource environment you are working in; for a robot arm, I can conceive that you could record position information for joints, for later playback, for instance - to an SD card, and have several of these recordings, perhaps selectable by a menu on an LCD or something like that. In theory, you could even stream joint position data real-time to an SD card, then stream it back for playback, to allow a "teach-pendant" type of recording, up to the limits of the card.
While you could - in theory - remove the RAM from an SD card, there really isnt' a point to doing so; there are plenty of easy ways to interface to such flash memory, and plenty of breakout boards/connectors exist to make it fairly easy to do so.
The only way you can get around some of these limitations would be by building or installing a small OS on top of the Arduino; there are a few projects out there that aim to do just this. With an OS, you can then run a "program" or "script" (interpreted, generally) that can be read and run on the fly from an SD card (and variable space could be managed in a form of virtual memory kept on the SD card or other storage), as well as perform other tasks at the same time via simple forms of multi-tasking. You gain some flexibility, but you lose speed.
In short, the Arduino can't be thought of as a general purpose computing system (that's why it is called a microcontroller); if you are looking to build a complex robotic system, you should look at the Arduino as a small building block for a larger system. Use it to control stuff, and communicate back to a regular PC (and if your system is to be mobile, there are many manufacturers of embedded PCs), which would handle all of the heavy lifting, processing, and control aspects.
