Out of that set of requirements, I think all that you will be able to achieve is control over the exposure. This can be done with a Librealsense script called cpp-config-ui. Lines 378 to 397 of the script should be particularly interesting to you.
Regarding the aperture and shutter, a developer called ddiakopoulos who seems to know what he is doing with Librealsense told somebody that "current-generation RealSense cameras are not designed to compete with the feature set of industrial vision sensors."
Having said that, the same developer did author a Librealsense script in which it seems as though the user can give priority to the shutter or the aperture using the Auto Exposure mode (see line 310 of the script).
It sounds like I can't set EV +/- option to let camera to auto adjust exposure time and ISO. I can only adjust color_gain(ISO) and color_exposure(or color_enable_auto_exposure (shutter speed)), right?
Although Librealsense has an auto exposure function (the official RealSense SDK hasn't implemented it, but Librealsense has), you can still control exposure yourself if you need to. Manual exposure is done with the instruction RS_OPTION_R200_LR_EXPOSURE.
The Librealsense documentation says that "this control allows manual adjustment of the exposure time value for the L/R imagers". You can find Librealsense scripts that use the instruction by googling for 'RS_OPTION_R200_LR_EXPOSURE'.
Edit: I found some interesting values for the camera settings that were posted by Intel support staff member Jesus G.
I forgot to mention that I only want to use color camera now, the IR cameras are the next stage I will use. I think RS_OPTION_R200_LR_EXPOSURE is the option for the left and right IR cameras, but also thanks for your information.
It looks as though color camera exposure is controlled with RS_OPTION_COLOR_EXPOSURE
A script says it "controls exposure time of color camera. Setting any value will disable auto exposure";
Yes, I have found that too.
In fact I have mentioned it in my question "iso may be the color_gain, shutter speed may be the color_exposure", the color_gain and color_exposure are in librealsense/rs.hpp at master · IntelRealSense/librealsense · GitHub . I'm not sure the relation, so I use "may be".
If you google for 'RS_OPTION_COLOR_EXPOSURE' there are only 10 search results. If you add the word 'shutter' to the search then you get just three results, which are about the 'giving priority to shutter or aperture' mode that we looked at earlier.
I would speculate that maybe you could adapt that code for manual exposure by changing the auto exposure instruction for the manual instruction. For example, adapting the auto-exposure code from earlier, you could try changing
case RS_OPTION_COLOR_ENABLE_AUTO_EXPOSURE: return set_pu<uint8_t>(handle, subdevice, ct_unit, UVC_CT_AE_MODE_CONTROL, value ? 2 : 1); // Modes - (1: manual) (2: auto) (4: shutter priority) (8: aperture priority)
case RS_OPTION_COLOR_EXPOSURE: return set_pu<uint8_t>(handle, subdevice, ct_unit, UVC_CT_AE_MODE_CONTROL, value ? 2 : 1); // Modes - (1: manual) (2: auto) (4: shutter priority) (8: aperture priority)
Can RealSense R200 control aperture? I think that such small lens couldn't change its aperture, just like the camera on the phone.
I'm not sure that the R200's physical aperture is changeable, but I did find a script for thr R200's Enhanced Photography mode that virtually simulates an aperture. You may get something useful from that code.
There is also this one, under the DepthRefocus section of the RealSense documentation.
Although these articles are for the RealSense SDK instead of the Librealsense you are using, it does suggest strongly that the effect of changing the camera aperture is simulated with software instead of done physically.