@Alex-Kushleyev Yes, dpkg -S <file path> to figure out which debs installed which libraries (ie, dpkg -S /usr/lib/libOpenCL.so
), apt-cache show to see the source (ubuntu ppa vs modalai), then dpkg-repack to repack the modalai debs.
Thanks again!
@Alex-Kushleyev Yes, dpkg -S <file path> to figure out which debs installed which libraries (ie, dpkg -S /usr/lib/libOpenCL.so
), apt-cache show to see the source (ubuntu ppa vs modalai), then dpkg-repack to repack the modalai debs.
Thanks again!
OMG IT WORKS!!
I was able to extract all these libraries from the host and directly install them inside the docker, and now the pcol-opencl-icd installation isn't needed.
This is really important for us, since it allows us to build external dependencies that rely on OpenCL in our pipeline directly without bind mounts (outside the host environment).
Really, really appreciate all your help!
FROM arm64v8/ubuntu:22.04
# Install necessary dependencies
RUN apt-get update && \
apt-get install -y \
cmake \
build-essential \
libglib2.0-0
# Copy Adreno GPU dependencies
# - libcutils0_0-r1_arm64.deb
# - libsync_1.0-r1_arm64.deb
# - qti-libion_0-r1_arm64.deb
# - liblog0_1.0-r1_arm64.deb
# - qti-adreno_1.0-r0_arm64.deb
COPY dep /root/dep
# Create required directory for qti-adreno install
RUN mkdir /usr/include/KHR && dpkg -i /root/dep/*.deb
# Copy and build test script
COPY ./hellocl /root/hellocl
RUN cd /root/hellocl && mkdir build && cd build && cmake .. && make
CMD ["bash"]
voxl2:~/opencl$ docker run -it --rm --privileged opencl:latest ./root/hellocl/build/hellocl
Platform Information:
Platform Name: QUALCOMM Snapdragon(TM)
Platform Vendor: QUALCOMM
Platform Version: OpenCL 2.0 QUALCOMM build: commit # changeid # Date: 11/10/21 Wed Local Branch: Remote Branch:
Platform Profile: FULL_PROFILE
Platform Extensions:
------------------------------------
Device Information:
Device Name: QUALCOMM Adreno(TM)
Device Vendor: QUALCOMM
Driver Version: OpenCL 2.0 QUALCOMM build: commit # changeid # Date: 11/10/21 Wed Local Branch: Remote Branch: Compiler E031.37.12.01
Device Version: OpenCL 2.0 Adreno(TM) 650
Device OpenCL C Version: OpenCL C 2.0 Adreno(TM) 650
Device Max Compute Units: 3
This should be three: 3
@Alex-Kushleyev That aligns pretty well with my own experience so far. Thanks again for looking into this!
@Eric-Katzfey Really appreciate it! Thanks so much
@Eric-Katzfey I know it's been a few years, but I see your name all over the voxl-docker-opencl
commit history was wondering if you'd be able to share your thoughts regarding how I might approach this? Specifically, if there are any steps you'd recommend I take to get OpenCL integrated into docker for Voxl2.
Thanks,
Eric
For reference, I've tried downloading the adreno-opencl-sdk-2.0 from qualcomm, loaded the libraries into the docker, and run privileged while also adding devices /dev/dri and /dev/kgsl-3d0. I also added a vendor including the path to qualcomm's libOpenCL library. When I query platforms using the C++ api, the script just hangs. If I don't set the vendor, it fails with a -1001 error.
Inside the docker, I can build all the sdk examples just fine. I just can't access Adreno.
Thanks again for any help.
Hello, we have a ROS2 humble autonomy stack that we we build in a CI pipeline and deploy to various platforms, including Voxl2.
The pipeline selects an appropriate base image for respective platforms (including nvida jetson, voxl, etc), each of which is a custom docker image based on ubuntu:jammy with unique layers for platform dependencies.
We would like to be able to utilize the Adreno GPU within our voxl2 target via OpenCL. I could use some assistance understanding how I might go about this for VOXL2. I am aware of this VOXL1 example: https://gitlab.com/voxl-public/voxl-docker-images/voxl-docker-opencl. Unfortunately, this example uses a prebuilt package for OpenCL to provide Adreno support.
Is there any documentation that could be shared regarding how this Adreno OpenCL library was built so that we can build an equivalent library in Ubuntu 22 that supports Adreno/VOXL2?
Any guidance would be greatly appreciated.
Thank you,
Eric
I am seeing a very strong correlation between projected pointcloud and the front left image, but it's not perfect (bottom edge seems a bit off), so my guess is that the pointcloud coordinate frame is aligned with the left camera after slight rotation (for rectification):
If so, how to extract this rotation and correct the transform?
Very quick question. I'm working on an application where I need to project the stereo_front_pc (from voxl-dfs-server) into the hires camera frame. This of course requires that I know the coordinate frame of the generated pointcloud. Since the underlying rectification process is closed source, I can't see any transformations involved in the rectification, just the resulting maps.
Is the coordinate frame associated with left camera, rectified left camera (in which case, how do I lookup R), or something else?
Tagging @James-Strawson and @thomas, since they are the authors of this package.
Thanks!
I'm converting a custom keras model to tflite. Unfortunately, this model requires GatherND, which is not included in the built-in TF lite OPS.
If I add SELECT_TF_OPS to the supported ops list, then my custom TFlite model builds locally:
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS
]
Will this model (with the SELECT_TF_OPS flag) work with tflite server for VOXL2, or can I only use the built-in tflite ops?
@Zachary-Lowell-0 I am getting a 404 from gitlab saying I don't have permission to view it. This is the link I'm trying to access: https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros2.git
@Zachary-Lowell-0 Sweet! Thanks Zach. I currently have ROS2 humble installed on my VOXL 2 flightdeck. Excited to try this out!
Can you tag me when this repository is public?
Any possibility of opening this up to the public before the release?
https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros2.git
@jacob-yaacubov Not sure why you didn't get a response from the moderation team?
It does like it's coming in SDK 1.1: https://docs.modalai.com/ros2-installation-voxl2/#mpa-to-ros2
I would also appreciate a roadmap or timeline. I am about to port it to ROS2 myself, and would prefer to save the hassle if it's just around the corner.
FWIW, we are not seeing this issue on the VOXL2 flightdeck (which does not use voxl-px4-imu-server)
@Moderator Is there someone else I should tag for this issue if you are unable to provide support?
@Moderator, we've observed that when we kill voxl-px4-imu-server, the timing discrepancy disappears. We of course need this to be running to get IMU data, but this process at least seems to be related to the issue.
@Moderator, has anyone been able to replicate this issue? Is this there a known solution to this?
@Moderator Unfortunately, there is not a way to configure ROS1 to use steady_clock instead of system_clock. In ROS2, it seems that this is configurable, but ModalAI does not support ROS2.
@Moderator We've determined that the issue where time appears to be jumping backwards in ROS is actually caused by the system clock - see https://forum.modalai.com/topic/2612/rb5-system-clock-issues
This is a big issue and I hope that we and the rest of the community can get some support.
Regarding rosbag record latency, we've determined that a lot of the latency seems to be attributable to the recording utility we are using vs the ROS network as a whole. We did some experiments using ROS subscribers to directly measure latency (writing results to CSV), and performance seemed much better than indicated by rosbag timestamps.