There is a new module under development that allows you to pipe VGA (640x480) video from the hires camera at 30fps via MPA so that it can be streamed with voxl-streamer using RTSP while simultaneously saving 4k HD video at 30fps encoded as h265 into a file, preferably on the SD card on voxl. This module is now available in beta and will be officially released in upcoming releases of the voxl SDK for voxl, rb5-flight, and voxl 2. The beta package is available using wget https://storage.googleapis.com/modalai_public/modal_packages/archive/voxl-hires-server_0.0.1.ipk. It is meant for use on voxl only and is compatible with voxl platform release 3-3-0-0.5.0-a. In order to use it with voxl-camera-server, reconfigure voxl-camera-server to not use the hires camera. For example, call voxl-configure-cameras and choose option 1 Tracking + Stereo to allow voxl-camera-server to access the tracking and stereo cameras but not the hires camera. Then you can use voxl-hires-server for the hires camera. Use voxl-hires-server -h to see the available options. More documentation will be available upon official release of this new package.
Eric Katzfey
@Eric Katzfey
Best posts made by Eric Katzfey
-
How to stream hires camera at VGA resolution and simultaneously capture 4k30 to a fileposted in Ask your questions right here!
-
RE: Streaming 4K video from Qualcomm RB5 droneposted in Qualcomm Flight RB5 5G Drone
@kitkatSG Yes, we have enabled most resolutions in that sensor now and are preparing a release to address this issue.
-
RE: Ardupilot : connection with Mission Plannerposted in VOXL 2
@Kessie Excellent, glad to hear you got it working! And thanks for adding the details on what you had to do to the posting!
-
RE: having trouble using docker on the sdcardposted in Ask your questions right here!
@JoeC Seems like it is an SD card issue. I was able to recreate the problem when using a SanDisk Extreme 32GB card. But when using a SanDisk Ultra 16GB card everything works fine.
-
RE: Maximum I2C Clock Frequencyposted in Ask your questions right here!
@Morten-Nissov 1MHz is a supported clock rate for i2c on the DSP based on what I can see in the code. But we have never tried running a device at 1MHz on i2c so it's tough to say why it wouldn't be working for you.
-
RE: VOXL2 I2C access from FCposted in ROS
@ceu-gomez PX4 on VOXL2 is composed of two separate applications. One is on the applications processor (running Ubuntu) and the other is on the DSP (running Qurt RTOS). They use the muorb module to communicate topic data back and forth. The spare i2c on J19 is mapped to the DSP, not the applications processor, so Ubuntu has no access to it. To gain access to it on Ubuntu side with PX4 running would require some new code. This is something that is on our development roadmap but no definitive answer on when we will be able to get to it.
-
RE: Voxl 2 SDK 1.1.1posted in VOXL SDK
@JoeC SDK 1.1.1 is now available. Please use the installer in the voxl2_SDK_1.1.1.tar.gz archive to install this.
-
RE: ModalAI uORB topic file handle locationposted in VOXL 2
@Dan It's not really documented anywhere other than the source code. The best place to look is at the muorb module code. That is what implements the uorb communicator interface to allow advertisements, subscription requests, and topic data to flow between the DSP and the Linux side.
-
RE: Voxl Streamer implementation with rtmp or dash streaming protocolposted in VOXL
@Hammas-Ali We have not tried either of those streaming protocols. Voxl is a Linux computer so it is likely that you can implement RTMP or DASH. voxl-streamer uses GStreamer so, if there are RTMP or DASH GStreamer elements available, it shouldn't be too hard to incorporate them.
-
RE: voxl-streamer client repetitive connect/disconnectposted in Ask your questions right here!
An update to UVC camera support has been started. It will increase number of supported cameras by allowing MJPEG and will increase number of supported viewers including latest QGroundControl versions. Target availability is mid-December.
Latest posts made by Eric Katzfey
-
RE: voxl-vision-hub sending unsolicited set_attitude messagesposted in Ask your questions right here!
@bendraper Edit /etc/modalai/voxl-vision-hub.conf and set "offboard_mode": "off"
-
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester Great! Glad you got it working.
-
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester In order to execute on the DSP side you have to have
qshellbefore the command. When you have it you get the error that command is not found. That's probably because the driver has not been built into the DSP image. It only seems to be on the apps side. -
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester slpi_proc = SLPI = SSC = DSP. I think the only option at this point is to attach an oscilloscope and verify the signals.
-
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester i2cdetect is looking for i2c ports on the apps processor so it isn't useful for this where we are trying to use DSP i2c ports. It shows an error message. Can you add the
-Xoption to see if that resolves that error condition? -
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester And, in general, for all software engineers out there here is a helpful tip. ModalAI is not affiliated with Anthropic in any way but I do want to highlight their Claude Code tool. It can really help you not just write code, but to understand code that is already there. So, for example, in this post there is a question about how the
-boption is parsed. It's a bit complicated how all of the pieces fit together but if you were to ask Claude this question: "I'm using the device driver in the file lightware_laser_i2c.cpp. I was told that the LightwareLaser class can take the command line option -b to specify the i2c bus number using the start command. Can you show me where in the code the -b option is parsed?". Claude will then give you this answer:The -b option is not parsed directly in this file. Looking at the code: At line 450, the custom option parsing only handles -R for rotation: while ((ch = cli.getOpt(argc, argv, "R:")) != EOF) { switch (ch) { case 'R': cli.rotation = (Rotation)atoi(cli.optArg()); break; } } The -b option (for I2C bus number) is handled automatically by the BusCLIArguments class, which is instantiated at line 445: BusCLIArguments cli{true, false}; This class is included from <px4_platform_common/i2c_spi_buses.h> (line 47). The cli.getOpt() method internally processes standard I2C/SPI options like -b (bus), -a (address), etc., before returning custom options like -R to this driver's switch statement. If you want to see where -b is actually parsed, you'd need to look at the BusCLIArguments class implementation in the PX4 platform common library: src/lib/drivers/device/posix/i2c_spi_buses.cpp or platforms/common/i2c_spi_buses.cpp The PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, false) call at line 435 documents that this driver accepts I2C options (including -b), but the actual parsing is abstracted away in the shared bus infrastructure. -
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester Yes, bus 4 corresponds to pins 7 and 8 on J19. I would put an oscilloscope on the data pin and see if you detect any activity when you start the driver to verify.
-
RE: VOXL2 J19 QUP3posted in Ask your questions right here!
@voxltester I tried to explain this in one of my previous responses. Let me add more detail. lightware_laser_i2c.cpp is C++ code. The class LightwareLaser has a couple of base classes. One of them is I2CSPIDriver, so it "inherits" the functionality of that class. That class is implemented in i2c_spi_buses.cpp. It uses BusCLIArguments to parse the command line options. That's where the
-boption is dealt with. -
RE: Timeout on clearing waypoints from FCUposted in Ask your questions right here!
@sansoy Can you please provide some details on your setup? What hardware are you using? Which software are you using (including versions)?
-
RE: Unable to connect multiple VOXL2 mini drones to QGroundControl using different UDP portsposted in Ask your questions right here!
@Sarika-Sharma It's in the configuration file but you'll need a more recent version of voxl-mavlink-server. I would recommend updating to SDK 1.6.2 and then grabbing voxl-mavlink-server 1.4.13 from here: http://voxl-packages.modalai.com/dists/qrb5165/sdk-1.6/binary-arm64/voxl-mavlink-server_1.4.13_arm64.deb.