Camera Application for Qualcomm® Robotics RB3 Development Kit
|Skill Level||Area of Focus||Operating System||Platform/Hardware|
|Beginner||Bluetooth, Computer Vision, Embedded, Sensors||Linux||Qualcomm Robotics RB3 Robotics Dev Kit|
Materials Required / Parts List / Tools
- Qualcomm Robotics RB3 Development Kit
- Power Adapter - 12 V with 2500 mA required by the 96Boards specification
- USB to Micro USB cable - For serial console interface and ADB, Fast boot commands
- USB to USB Type C cable - For connecting the USB3.0 Type C port and flashing images
- Host PC OS for Qualcomm Robotics RB3 SDK build process
Source code: Camera Application
Build / Assembly Instructions
Complete the build instructions in the "Hello RB3" project, and make sure that the following steps are done before proceeding with running the application on device.
1. Setup the development environment
- 1.1) Install Android SDK tools (ADB, Fastboot)
- 1.2) Install and configure the USB driver
- 1.3) Flash the firmware image on the board
- 1.4) Setup serial port for debugging purpose
- 1.5) Install the App Toolchain SDK
2. Camera Application:
2.1. From the Thundercomm Qualcomm Robotics RB3 Development Kit web page, under the Technical Documents tab in the “Sample-apps-codes” section, download source code for camera application: “camera_test.tar”
2.2. After decompressing the .tar file, the directory is as follows:$ cd “Path to downloaded source code”$ tree -L 1
Look for Makefile in the downloaded folder
3. Build and transfer the application.
3.1. Run the Make file to compile and build the application.
$ cat Makefile
3.2. Build the application:$ source /usr/local/oecore-x86_64/environment-setup-armv7a-neon-oemllib32-linux-gnueabi$ make
3.3. Connect the board to the host PC via Type C cable and ensure that the ADB port can be used (check using ‘adb devices’ and connect using ‘adb shell’)
Transfer the application on to the RB3 board:
$ adb push hal3_test /bin/
4. Let’s explore how to use the four cameras concurrency that help in developing the robotics solutions for tracking and evaluation of objects present in the captured images.
The Qualcomm Robotics RB3 Development Kit supports four camera interfaces namely Stereo, ToF, Tracking and Main camera (OV8856)
Camera devices can be attached in various combinations and Sensor ID reflects these combinations, as shown in the matrix below:
In the example of “Sr. No” 1.4, here we are connecting only one of the supported sensors. In this case, “cameraID = 0” will select “Tracking”.
In the example of “Sr. No” 2.3, here we are connecting stereo camera along with tracking (2 camera sensor scenario). In this case, “cameraID=1” will select “Tracking” while “cameraID=0” will select “Stereo”
4.1. The combinations of cameras which result in different concurrency modes, such as 2-camera concurrency mode and 3-camera concurrency mode, help in minimizing drawbacks in capturing perfect images such as ‘Light scattering issue’ and also helps in measurements such as ‘Depth Calculation’.
4.2. A simple demonstrate on how to capture an image using Main camera in jpeg format is given below. The sensor ID specified in the command will determine concurrency of cameras used.
4.3. The hal3_test application is available on the Thundercomm website to capture image streams provided by the cameras. This application is written using the HAL3 API.
4.4. To run the hal3_test application, log in to the Qualcomm Robotics RB3 device as a root (using serial or adb shell).
Start preview with snapshot (size:3264x2448,format:jpeg)
$ adb shell# hal3_testCAM0>>A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg(A: Add a camera device for test)CAM0>> P:1 // P : trigger dump previewCAM0>> s:1 // s : Trigger snapshotCAM0>> D // Delete current camera deviceCAM0>> Q // Quit# exit
The following command will pull the image from the Qualcomm Robotics RB3 device board to the host PC, which can be viewed using image viewer:
$ adb pull /data/misc/camera/”filename”