With other microcontrollers, I was able to use their in-built DACs, however I am aware that the Arduino UNO doesn't have any? Is there a way using PWM or analogWrite to output these type of pulses? I'm new to Arduino programming, so I'm a bit unsure. However my next guess would be to use an R-2R ladder to output this type of pulse?
A RC filter will create a slow slewrate.
A slow rising signal and a fast falling signal can be created with an extra transistor (the signal will be inverted).
For a linear rising and falling edge, a resistor network with a few digital pins is a simple solution. I think it can be created with an opamp circuit as well, but there are also special chips called "slew rate limiter".
By "ramp", it seems that you mean a square wave with sloping rather than vertical edges between + and -. Can you clarify the question further: do the sloping parts need to be linear?
Direct synthesis of the waveform could be done using the digital output ports and an R2R ladder, as suggested in the comments. Each PWM timer output of the AVR can control output of 2 digital pins and definitely with a timing precision better than 1 microsecond. If high voltage resolution is needed, this method may not be able to produce the result you want.
Other possible solutions:
The waveform as plotted in the original post looks like a truncated sine wave. Such a waveform could be made by clipping a sine wave with an operational amplifier. For the sine wave connect the Arduino to a DDS module such as AD9850/1.
Use an external digital-to-analog converter, e.g. MCP48x2
Use an Arduino Zero or other 32-bit microcontroller (e.g. ARM STM32). These microcontrollers have a true analog output pin, but it's not bipolar.