I have been doing some testing with the cameras on the RTF drone and realized it is not the right way to test because of the fast discharge of the Li Po's. I think the compute board is more suited for development and the RTF is for actual testing and flying.
I am deciding to invest in the R200 visionary kit at https://click.intel.com/intelr-realsensetm-developer-kit-r200-2264.html Intel® RealSense™ Developer Kit (R200), VF0830
Please let me know if this is the only thing I need to hook it up to the compute board I have and start working with the realsense cameras. I plan to go ahead and order it as soon as possible.
I want to make sure that I do not need the 'optional' enclosure kit for this and that the visionary kit and compute board are enough to get working with the cameras.
It looks like this is what I need to order
https://click.intel.com/intel-aero-platform-for-uavs-vision-accessory-kit.html Intel® Aero Platform for UAVs Vision Accessory Kit
I was thinking the same thing, but rather than buy a separate unit, I'm curious if it's possible to rig up the R200 that's connected to the drone for use with desktop/laptop.
1 unplug it from the drone,
2 plug into desktop/laptop for development, debugging ..etc.
3 plug back into drone and fly.
Seems like it's using USB3.0. Maybe just need an adapter plug or can rig one up if pins are documented somewhere?
That might be possible to do Randy. I didnt want to unplug/plug/unplug/plug to do any work. I went ahead and ordered the Vision kit from https://click.intel.com/intel-aero-platform-for-uavs-vision-accessory-kit.html Intel® Aero Platform for UAVs Vision Accessory Kit
I have a compute board already so might as well get it.
Just as FYI for anyone else that's curious about the "adapter idea".
I did some preliminary research. The left side is from the R200 datasheet, and the right side is standard wiring for a USB 3.0 connector.
I've drawn some colored lines for my best estimate of how to wire up a custom adapter. I'm not sure I have the guts to try it though. If anyone is more knowledgeable on this topic and can provide insights that'd be great.
Thanks for your interest in the Intel® Aero™ Platform for UAVs.
Rohan, you are right the https://click.intel.com/intel-aero-platform-for-uavs-vision-accessory-kit.html Intel® Aero Platform for UAVs Vision Accessory Kit is enough to get working the cameras with the Intel® Aero™ Compute Board.
Randy, yes, it may be possible to use the R200 as a desktop, actually I was going to recommend you to check the R200 datasheet, but you already went ahead and post an excellent image with the pin assignments. We appreciate that you took the time to do this.
Now, you should know that the USB 3.0 cable used in the R200 Development Kit has been tested by Intel, so I can't guarantee that the R200 in the Aero may work as a desktop camera.
Hope you find this information useful, have a nice day!
I attached the R200 camera to the board.
Running rs_start_device() from my application gave me the following error:
UVCIOC_CTRL_QUERY:UVC_SET_CUR error 5, Input/output error
rs_get_device() works properly and gives me back the R200 device. Any idea why the start_device is giving the error and what does that error mean ?
I remembered dealing with a case last month involving that error on the RealSense support forum.
Cases involving it usually seem to involve the Ubuntu branch of Linux. That caught my attention on this forum because the recommended flavor of Linux for the Compute Board is Yocto Project (though you can develop an app in Ubuntu on a full PC and send the source code to the Compute Board via wi-fi).
Are you using Ubuntu with your Compute Board, please? If so, the following discussion a week ago on the RealSense forum may be useful to you.
I ran into this problem while running on Yocto. I have not installed Ubuntu on the compute board for reasons stated in the Intel wiki stating certain features including the cameras 'may not work' on ubuntu. Has anyone run into the above error on Yocto ? if so, any idea how to resolve ? I do not have additional R200 cameras to try out.
Could you post the rs_start_device() line from your application please so that we can see the precise instructions that you are using?
During some research into this instruction, I noticed that most scripts placed code inside the brackets at the end of rs_start_device. Example:
void rs_start_device (rs_device * device,
rs_error ** error
The above example is supposed to begin streaming on all enabled streams for this device.
I powered down and powered up the board. However, now I get this when I try to enable the RGB stream
uvc subdevice 2 cannot provide 640x480:RGB8@1Hz COLOR
The function call I make from my application is:
rs_enable_stream( camera, RS_STREAM_COLOR, WIDTH, HEIGHT, RS_FORMAT_RGB8, 1, &e );
So I am asking for 1 frame/sec (get the same with 10 frames/sec. Is there a minimum I need to specify when I enable the stream ?
My knowledge of Aero is limited. When using R200 for other purposes though, it usually desires a minimum of 30 fps for its streams and tries to change the fps to 30 if a developer specifies a lower value such as 10 or 17 fps. If you look at a table of RealSense resolutions, they usually only have 30 or 60 fps listed beside the resolutions.
Although a couple of R200 resolutions allow 60 fps, most are 30. And in practice, using 60 fps can cause an app to freeze up as the USB port gets overwhelmed with bandwidth. It's less of an issue with newer RealSense cameras, I believe, as they have better tech.
You are correct. It seems like 30 fps is the R200 min processing speed from what I've read and tested. Thanks.
I have a question regarding how some of the rs_* functions work -
rs_wait_for_frames() --> says it blocks until new frames are available.
Then we normally call
rs_get_frame_data() to get the latest frame data.
In an ideal world, rs_wait_for_frames() would wake up 30 times a second (if we have specified 30 fps) and we would call rs_get_frame_data() 30 times every second to process the frame.
What if we have 5 frames come in at the same time. Is rs_wait_for_frames() synchronized enough to wake up 5 times so we do not lose any frames and are sure rs_get_frame_data() is actually called 5 separate times ? I would imagine it is, but I havent seen any really good documentation on the realsense library functions.
One of the main Librealsense developers says about the wait function:. "Both F200 and R200 have internal sync mechanism to trigger the sensors on a common clock. These are exposed to software via frame-counters, and we provide matched frame sets in librealsense."
I do not know what frame-counters and frame sets mean. Can you point me to the documentation where that is mentioned so I can get more context ?
The relevant functions I am using and see are rs_wait_for_frames and rs_get_frame_data.
I couldn't find further useful information about frame counters and frame sets, sadly. I think 'wait_for_frame' is the correct one to focus on though. Other people have experienced timeout errors with wait_for_frame. A couple of developers reported that they got greater stability and longer running times before timeouts occurred if they had their camera attached to a mains-powered USB hub instead of plugging it directly into a device and powering it off that device. I know that knowledge isn't directly applicable to the Aero-related R200 though. Sorry I couldn't be of more help with this case!