@Alex-Kushleyev
I will test it with the flight deck and let you know as soon as I can
Latest posts made by giladWDS
-
RE: cam does not seem to be alive issue
-
RE: cam does not seem to be alive issue
@Alex-Kushleyev
the flight-deck is a voxl2 unit (qrb chip)
with voxl-camera-server 1.8.9 on 1.1.2 SDK
other than that one imx412 is enough for the server to crash but let me know if you want the full config and/or driver list -
RE: cam does not seem to be alive issue
@Alex-Kushleyev hi
I just stumbled upon the same bug with our voxl-flight-deck module that also refuses to downscale the fps. -
RE: cam does not seem to be alive issue
@Alex-Kushleyev
It would take some time to do this since I found a workaround compiling the camera server from source with a small fix:
I changed the hal3_camera_mgr.cpp
from:
int32_t frame_rate_rate[] = {fps,fps};
into:
int32_t frame_rate_rate[] = {1,30};
I know this is hacky and will probably bite me if I try to put higher fps for low fps cameras like a tof or something but it works for now.
I will get back to it and update. -
RE: cam does not seem to be alive issue
@Alex-Kushleyev
I have tested different layouts with different cameras disabled and it didn't work either.
for some reason, the voxl won't accept any other frame rate in the config file other than 30. -
RE: cam does not seem to be alive issue
@Alex-Kushleyev
Hi, after I had to work on other projects I have finally come back to this and I managed to make the voxl read all cameras when I moved the tracking camera to j8-lower.
now the issue I'm facing is with a frame rate reduction.
it seems that whenever I try to change the frame rate of one of the high-res cameras the server crashes.
this is the server log:Oct 27 12:35:13 root systemd[1]: Started voxl-camera-server. Oct 27 12:35:13 root voxl-camera-server[14170]: detected system image 1.7.6 Oct 27 12:35:13 root voxl-camera-server[14170]: using new imx412 defaults Oct 27 12:35:13 root voxl-camera-server[14170]: detected system image 1.7.6 Oct 27 12:35:14 root voxl-camera-server[14170]: using new imx412 defaults Oct 27 12:35:14 root voxl-camera-server[14170]: ================================================================= Oct 27 12:35:14 root voxl-camera-server[14170]: configuration for 3 cameras: Oct 27 12:35:14 root voxl-camera-server[14170]: cam #0 Oct 27 12:35:14 root voxl-camera-server[14170]: name: hires2 Oct 27 12:35:14 root voxl-camera-server[14170]: sensor type: imx412 Oct 27 12:35:14 root voxl-camera-server[14170]: isEnabled: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: camId: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: camId2: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: fps: 10 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate2: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_preview: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: en_raw_preview: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_small_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_width: 1024 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_height: 768 Oct 27 12:35:14 root voxl-camera-server[14170]: en_large_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: en_snapshot: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: ae_mode: isp Oct 27 12:35:14 root voxl-camera-server[14170]: standby_enabled: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: decimator: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: independent_exposure:0 Oct 27 12:35:14 root voxl-camera-server[14170]: cam #1 Oct 27 12:35:14 root voxl-camera-server[14170]: name: hires Oct 27 12:35:14 root voxl-camera-server[14170]: sensor type: imx412 Oct 27 12:35:14 root voxl-camera-server[14170]: isEnabled: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: camId: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: camId2: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: fps: 10 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate2: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_preview: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: en_raw_preview: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_small_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_width: 1024 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_height: 768 Oct 27 12:35:14 root voxl-camera-server[14170]: en_large_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: en_snapshot: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_width: 4056 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_height: 3040 Oct 27 12:35:14 root voxl-camera-server[14170]: ae_mode: isp Oct 27 12:35:14 root voxl-camera-server[14170]: standby_enabled: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: decimator: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: independent_exposure:0 Oct 27 12:35:14 root voxl-camera-server[14170]: cam #2 Oct 27 12:35:14 root voxl-camera-server[14170]: name: tracking Oct 27 12:35:14 root voxl-camera-server[14170]: sensor type: ar0144 Oct 27 12:35:14 root voxl-camera-server[14170]: isEnabled: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: camId: 2 Oct 27 12:35:14 root voxl-camera-server[14170]: camId2: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: fps: 30 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_rotate2: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: en_preview: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_width: 1280 Oct 27 12:35:14 root voxl-camera-server[14170]: pre_height: 800 Oct 27 12:35:14 root voxl-camera-server[14170]: en_raw_preview: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: en_small_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_width: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: small_video_height: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: en_large_video: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_width: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: large_video_height: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: en_snapshot: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_width: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: snap_height: -1 Oct 27 12:35:14 root voxl-camera-server[14170]: ae_mode: lme_msv Oct 27 12:35:14 root voxl-camera-server[14170]: standby_enabled: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: decimator: 1 Oct 27 12:35:14 root voxl-camera-server[14170]: independent_exposure:0 Oct 27 12:35:14 root voxl-camera-server[14170]: fsync_en: 0 Oct 27 12:35:14 root voxl-camera-server[14170]: fsync_gpio: 111 Oct 27 12:35:14 root voxl-camera-server[14170]: ================================================================= Oct 27 12:35:14 root voxl-camera-server[14170]: connected to GPS mavlink pipe Oct 27 12:35:14 root voxl-camera-server[14170]: Starting Camera: hires2 (id #0) Oct 27 12:35:14 root voxl-camera-server[14170]: Connected to cpu-monitor Oct 27 12:35:14 root voxl-camera-server[14170]: Using gain limits min: 100 max: 1600 Oct 27 12:35:14 root voxl-camera-server[14170]: gbm_create_device(156): Info: backend name is: msm_drm Oct 27 12:35:14 root voxl-camera-server[14170]: Starting Camera: hires (id #1) Oct 27 12:35:14 root voxl-camera-server[14170]: Using gain limits min: 100 max: 1600 Oct 27 12:35:14 root voxl-camera-server[14170]: ERROR: Received "Result" error from camera: hires2 Oct 27 12:35:14 root systemd[1]: voxl-camera-server.service: Main process exited, code=killed, status=6/ABRT Oct 27 12:35:14 root systemd[1]: voxl-camera-server.service: Failed with result 'signal'. Oct 27 12:35:16 root systemd[1]: voxl-camera-server.service: Service hold-off time over, scheduling restart. Oct 27 12:35:16 root systemd[1]: voxl-camera-server.service: Scheduled restart job, restart counter is at 1.
and this is the config file:
cat /etc/modalai/voxl-camera-server.conf /** * voxl-camera-server Configuration File * * Each camera has configurations for up to 4 HAL3 streams: * - `preview` stream for raw unprocessed images from CV cameras * - `small_video` 720p (ish) h264/h265 compressed for fpv video streaming * - `large_video` 4k (ish) h264/h265 for onboard video recording to disk * - `snapshot` ISP-processed JPG snapshots that get saved to disk * * on QRB5165 platforms (VOXL2 and VOXL2 mini) you can only have 3 of the 4 enabled * * This file is generated from default values by voxl-configure-cameras. * Do not expect arbitrary resolutions to work, the ISP and video compression * pipelines only support very specific resolutions. * * The default video compression mode is cqp or Constant Quantization Parameter * * * */ { "version": 0.1, "fsync_en": false, "fsync_gpio": 111, "cameras": [{ "type": "imx412", "name": "hires2", "enabled": true, "camera_id": 0, "fps": 10, "en_preview": true, "preview_width": 4056, "preview_height": 3040, "en_raw_preview": false, "en_small_video": false, "small_video_width": 1024, "small_video_height": 768, "small_venc_mode": "h265", "small_venc_br_ctrl": "cqp", "small_venc_Qfixed": 30, "small_venc_Qmin": 15, "small_venc_Qmax": 40, "small_venc_nPframes": 9, "small_venc_mbps": 2, "en_large_video": false, "large_video_width": 4056, "large_video_height": 3040, "large_venc_mode": "h265", "large_venc_br_ctrl": "cqp", "large_venc_Qfixed": 38, "large_venc_Qmin": 15, "large_venc_Qmax": 50, "large_venc_nPframes": 29, "large_venc_mbps": 30, "en_snapshot": false, "en_snapshot_width": 4056, "en_snapshot_height": 3040, "ae_mode": "isp" }, { "type": "imx412", "name": "hires", "enabled": true, "camera_id": 1, "fps": 10, "en_preview": true, "preview_width": 4056, "preview_height": 3040, "en_raw_preview": false, "en_small_video": false, "small_video_width": 1024, "small_video_height": 768, "small_venc_mode": "h265", "small_venc_br_ctrl": "cqp", "small_venc_Qfixed": 30, "small_venc_Qmin": 15, "small_venc_Qmax": 40, "small_venc_nPframes": 9, "small_venc_mbps": 2, "en_large_video": false, "large_video_width": 4056, "large_video_height": 3040, "large_venc_mode": "h265", "large_venc_br_ctrl": "cqp", "large_venc_Qfixed": 38, "large_venc_Qmin": 15, "large_venc_Qmax": 50, "large_venc_nPframes": 29, "large_venc_mbps": 30, "en_snapshot": false, "en_snapshot_width": 4056, "en_snapshot_height": 3040, "ae_mode": "isp" }, { "type": "ar0144", "name": "tracking", "enabled": true, "camera_id": 2, "fps": 30, "en_rotate": false, "en_preview": true, "preview_width": 1280, "preview_height": 800, "en_raw_preview": true, "ae_mode": "lme_msv", "ae_desired_msv": 60, "exposure_min_us": 20, "exposure_max_us": 33000, "gain_min": 54, "gain_max": 8000, "exposure_soft_min_us": 5000, "ae_filter_alpha": 0.600000023841858, "ae_ignore_fraction": 0.20000000298023224, "ae_slope": 0.05000000074505806, "ae_exposure_period": 1, "ae_gain_period": 1 }] }
And when I change it back to 30 fps it works. the problem is the CPU toll 30 takes.
-
RE: CP with custom sensors
@James-Strawson
Thank you for the response.
we want to use an array of 4 vl53l5cx sensors to capture data around the drone. I know that there is existing support for vl53l1cx sensors. since it is crucial to know of possible obstacles from multiple angles we need the 4x4 version.
in this case, I have a point cloud of 64 points around the drone. so should I send those on the pointcloud pipe?for the few services:
this is the service inspect output:Service Name | Enabled | Running | CPU Usage ------------------------------------------------------------------- docker-autorun | Enabled | Not Running | modallink-relink | Disabled | Not Running | voxl-camera-server | Enabled | Running | 2.2% voxl-cpu-monitor | Enabled | Running | 0.6% voxl-dfs-server | Disabled | Not Running | voxl-feature-tracker | Disabled | Not Running | voxl-flow-server | Disabled | Not Running | voxl-imu-server | Enabled | Running | 0.1% voxl-lepton-server | Disabled | Not Running | voxl-mavcam-manager | Disabled | Not Running | voxl-mavlink-server | Enabled | Running | 2.9% voxl-modem | Disabled | Not Running | voxl-neopixel-manager | Disabled | Not Running | voxl-open-vins-server | Disabled | Not Running | voxl-portal | Enabled | Running | 0.1% voxl-px4-imu-server | Disabled | Not Running | voxl-px4 | Enabled | Running | 30.5% voxl-qvio-server | Disabled | Not Running | voxl-rangefinder-server | Disabled | Not Running | voxl-remote-id | Disabled | Not Running | voxl-softap | Disabled | Not Running | voxl-static-ip | Disabled | Not Running | voxl-streamer | Disabled | Not Running | voxl-tag-detector | Disabled | Not Running | voxl-tflite-server | Disabled | Not Running | voxl-time-sync | Disabled | Not Running | voxl-uvc-server | Disabled | Not Running | voxl-vision-hub | Enabled | Running | 1.7% voxl-wait-for-fs | Enabled | Completed |
-
CP with custom sensors
Hi,
I want to integrate collision prevention into my system.
currently, I have a microcontroller that manages all the sensor data and is connected to the voxl2 through serial.
now I debate two ways to implement this and I don't know that is the best approach.- using mavlink directly to px4. I saw that the px4 exposes a UDP port to send mavlink msgs directly to px4. this feels sub-optimal as this bypasses the integrated VOA system and the voxel-vision-hub.
- make a pipe client and transform the data from the serial port to some kind of TOF sensor and publish it.
Is the second option the way to go or is the first option viable as well?
Furthermore, I don't see all the voxl-vision-hub pipes:
voxl2:~$ voxl-list-pipes -t camera_image_metadata_t hires_large_color hires_large_encoded hires_large_grey hires_small_color hires_small_encoded hires_small_grey hires_snapshot cpu_stats_t cpu_monitor imu_data_t imu_apps imu_fft_data_t imu_apps_fft mavlink_message_t mavlink_ap_heartbeat mavlink_attitude mavlink_from_gcs mavlink_gps_raw_int mavlink_local_position_ned mavlink_onboard mavlink_sys_status mavlink_to_gcs point_cloud_metadata_t voa_pc_out pose_vel_6dof_t vvhub_body_wrt_fixed vvhub_body_wrt_local string gcs_ip_list text horizon_cal_io
Is this presenting all server pipes that have clients?
-
RE: custom uart usage
@Eric-Katzfey
Thank you for the reply
The only board I have no for testing is:
MCCA-M0151-1
I use the USB portion for the wifi and see that it exposes a uart port- HS1 for the external USB board.
I can't seem to communicate with this HS0 port as a standalone port.
Is it only for external Flight controllers?I looked into this:
https://docs.modalai.com/usb2-type-a-breakout-add-on/
but it seems to expose the same uart I can not talk to.
Can you please recommend me a board that won't affect the wifi capability but would add uart ports that I desperately need?- EDIT:
also if push comes to shove I would appreciate sources on how to write and compile a px4 driver that reads from the uart on j19.
Thank you and best regards,
Gilad - EDIT:
-
RE: custom uart usage
@giladWDS To specify. my sensor is connected to a microcontroller. so also I prefer UART I can do i2c(I have tried and it didn't work as well) and I can do SPI if it works better.