Developing with ZED X on a PC
Developing your projects on Jetson platforms can sometimes be difficult and inconvenient, due to the limited hardware specifications and software compatibility issues with developer tools that we are used to working with. As the ZED X is only compatible with these platforms, here is a method for you to develop with Jetson and the ZED SDK as if you were coding on your local machine.
ZED SDK Streaming #
ZED SDK Streaming for ZED X is a powerful tool for developers to increase their productivity and flexibility while testing with ZED X cameras. By streaming ZED data over the local network, any ZED SDK application can access this low-latency stream, allowing developers to work with the data as if it were a camera directly connected to their machine.
In this article, we will guide you through the steps required to set up and connect your machine for ZED SDK Streaming.
You can learn more about the ZED SDK Streaming and how it works here.
Prerequisites #
Make sure that you have performed the following before starting this guide:
- Set up your Jetson device for ZED X using this guide.
- Have access to the Jetson device physically or remotely via SSH.
- Installed the ZED SDK on your local machine and on the Jetson device.
Setting up the Jetson device for ZED SDK Streaming #
To enable ZED SDK Streaming, the remote device must run an application that streams ZED data.
This application is provided in a sample from the ZED SDK. Navigate to the corresponding directory and run the application with the following commands:
# On the Jetson device
cd /usr/local/zed/samples/camera\ streaming/sender/cpp
mkdir build && cd build
cmake .. && make
./ZED_Streaming_Sender
# On the Jetson device
cd /usr/local/zed/samples/camera\ streaming/sender/python
python3 streaming_sender.py
The following log will be displayed, giving the port number that the device is streaming to:
[Sample] Streaming on port 30000
[Streaming] Streaming is now running....
Note: Don’t hesitate to take a look at the source code of the sample, which gives an example to run ZED SDK Streaming in your own applications.
Connect to the stream on your local machine #
Now that the device is streaming data, you can visualize it live using the ZED SDK tools. Let’s run ZED_Depth_Viewer:
./ZED_Depth_Viewer
In the top left corner, click on the icon:
The following window will open. Enter the IP of the Jetson device, as well as the port used by the sender (by default: 30000).
After a few moments, you should have a live view of the ZED camera streaming from the device!
Connect using the ZED SDK #
Now that we have the stream up and running, let’s use it in our ZED SDK application.
Say we have the following C++ application which retrieves images from a ZED camera connected physically to the host machine.
// Create a ZED camera object
Camera zed;
// Set init parameters as default
InitParameters init_parameters;
// Open the camera
auto err = zed.open(init_parameters);
if (err != ERROR_CODE::SUCCESS) {
return EXIT_FAILURE;
}
// Capture ZED images forever
sl::Mat image;
while (true) {
// Grab an image
err = zed.grab();
// A new image is available if grab() returns ERROR_CODE::SUCCESS
if (err == ERROR_CODE::SUCCESS) {
// Get the left image
zed.retrieveImage(image, VIEW::LEFT);
}
}
// Close the camera
zed.close();
return EXIT_SUCCESS;
To change the input to a ZED SDK stream, the only change required is to change the input in initParameters
:
// Create a ZED camera object
Camera zed;
// Set init parameters as default
InitParameters init_parameters;
init_parameters.input.setFromStream("192.168.X.X", 30000); // Set device IP and port here
// Open the camera
auto err = zed.open(init_parameters);
if (err != ERROR_CODE::SUCCESS) {
return EXIT_FAILURE;
}
...
Good job! You can now develop on your local PC while using a ZED camera on a remote device.