Streaming Stereo Camera
-
@Kris Yes, take a look at
/etc/modalai/voxl-streamer.conf
for more info -
@tom Thank you for your reply.
This is what I have setup in my voxl-streamer.conf{ "input-pipe": "tracking", "bitrate": 1000000, "rotation": 0, "decimator": 1, "port": 8900 }
The services that are running are;
voxl:~$ voxl-inspect-services Scanning services... Service Name | Enabled | Running | CPU Usage ------------------------------------------------------------------- docker-autorun | Disabled | Not Running | docker-daemon | Disabled | Not Running | modallink-relink | Disabled | Not Running | voxl-camera-server | Enabled | Running | 5.1% voxl-cpu-monitor | Enabled | Running | 1.7% voxl-dfs-server | Disabled | Not Running | voxl-imu-server | Enabled | Running | 0.0% voxl-lepton-server | Disabled | Not Running | voxl-mavcam-manager | Enabled | Running | 1.7% voxl-mavlink-server | Enabled | Running | 5.1% voxl-modem | Disabled | Not Running | voxl-portal | Enabled | Running | 0.0% voxl-qvio-server | Enabled | Running | 6.8% voxl-rangefinder-server | Disabled | Not Running | voxl-remote-id | Disabled | Not Running | voxl-streamer | Enabled | Running | 0.0% 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 | 3.4% voxl-wait-for-fs | Enabled | Completed |
My vision-hub.conf
{ "config_file_version": 1, "en_localhost_mavlink_udp": false, "localhost_udp_port_number": 14551, "en_vio": true, "vio_pipe": "qvio", "secondary_vio_pipe": "ov", "en_reset_vio_if_initialized_inverted": true, "vio_warmup_s": 3, "send_odom_while_failed": true, "en_set_clock_from_gps": true, "en_force_onboard_mav1_mode": true, "en_reset_px4_on_error": true, "horizon_cal_tolerance": 0.5, "offboard_mode": "trajectory", "follow_tag_id": 0, "figure_eight_move_home": false, "robot_radius": 0.300000011920929, "collision_sampling_dt": 0.1, "max_lookahead_distance": 1, "en_tag_fixed_frame": false, "fixed_frame_filter_len": 5, "en_transform_mavlink_pos_setpoints_from_fixed_frame": false, "en_voa": true, "voa_upper_bound_m": -0.15000000596046448, "voa_lower_bound_m": 0.15000000596046448, "voa_voa_memory_s": 1, "voa_max_pc_per_fusion": 100, "voa_pie_max_dist_m": 20, "voa_pie_min_dist_m": 0.25, "voa_pie_under_trim_m": 1, "voa_pie_threshold": 3, "voa_send_rate_hz": 20, "voa_pie_slices": 36, "voa_pie_bin_depth_m": 0.15000000596046448, "voa_inputs": [{ "enabled": true, "type": "point_cloud", "input_pipe": "dfs_point_cloud", "frame": "stereo_l", "max_depth": 8, "min_depth": 0.300000011920929, "cell_size": 0.079999998211860657, "threshold": 4, "x_fov_deg": 68, "y_fov_deg": 56, "conf_cutoff": 0 }, { "enabled": true, "type": "point_cloud", "input_pipe": "stereo_front_pc", "frame": "stereo_front_l", "max_depth": 8, "min_depth": 0.300000011920929, "cell_size": 0.079999998211860657, "threshold": 4, "x_fov_deg": 68, "y_fov_deg": 56, "conf_cutoff": 0 }, { "enabled": true, "type": "point_cloud", "input_pipe": "stereo_rear_pc", "frame": "stereo_rear_l", "max_depth": 8, "min_depth": 0.300000011920929, "cell_size": 0.079999998211860657, "threshold": 4, "x_fov_deg": 68, "y_fov_deg": 56, "conf_cutoff": 0 }, { "enabled": true, "type": "tof", "input_pipe": "tof", "frame": "tof", "max_depth": 6, "min_depth": 0.15000000596046448, "cell_size": 0.079999998211860657, "threshold": 3, "x_fov_deg": 106.5, "y_fov_deg": 85.0999984741211, "conf_cutoff": 125 }, { "enabled": true, "type": "rangefinder", "input_pipe": "rangefinders", "frame": "body", "max_depth": 8, "min_depth": 0.300000011920929, "cell_size": 0.079999998211860657, "threshold": 4, "x_fov_deg": 68, "y_fov_deg": 56, "conf_cutoff": 0 }] }
Then when I go to run voxl-streamer, it works at first but when I open VLC it does not work.
voxl:~$ voxl-streamer -i tracking existing instance of voxl-streamer found, attempting to stop it Waiting for pipe tracking to appear Found Pipe detected following stats from pipe: w: 640 h: 480 fps: 30 format: RAW8 Stream available at rtsp://127.0.0.1:8900/live A new client rtsp://192.168.110.159:40472(null) has connected, total clients: 1 Camera server Connected ERROR: New frame rejected, status = -2 rtsp client disconnected, total clients: 0 no more rtsp clients, closing source pipe intentionally (voxl-streamer:3746): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (voxl-streamer:3746): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed ERROR: New frame rejected, status = -2 A new client rtsp://192.168.110.159:40484(null) has connected, total clients: 1 WARNING, _stop_helper_and_remove_pipe timed out joining read thread rtsp client disconnected, total clients: 0 no more rtsp clients, closing source pipe intentionally A new client rtsp://192.168.110.159:60720(null) has connected, total clients: 1 Camera server Connected rtsp client disconnected, total clients: 0 no more rtsp clients, closing source pipe intentionally
I am not sure why I am not able to do this.
192.168.110.152 is my current Seeker IP.
192.168.110.159 is my current host PC IP.What I would really like to do is connect my stereo stream with QGroundControl instead of VLC. But I haven't even gotten VLC to stream it yet....
-
@Kris It looks like
voxl-streamer
is already running in the background and then you're running it again in the terminal manually, hence theexisting instance of voxl-streamer found, attempting to stop it
You should be able to pull up the stream if the service is running, no need to run it manually like that
-
@tom Thank you.
I tried it again without manually running voxl-streamer.
First I made sure it was on by inspecting my services.
When I confirmed that it was on, I tried to input the rtsp:// in the Open Network Stream in VLC, but it failed.
Here is the error message in VLCConnection failed: VLC could not connect to "192.168.110.152:8900". Your input can't be opened: VLC is unable to open the MRL 'rtsp://192.168.110.152:8900/live'. Check the log for details. Connection failed: VLC could not connect to "127.0.0.1:8900". Your input can't be opened: VLC is unable to open the MRL 'rtsp://127.0.0.1:8900/live'. Check the log for details. Connection failed: VLC could not connect to "192.168.110.159:8900". Your input can't be opened: VLC is unable to open the MRL 'rtsp://192.168.110.159:8900/live'. Check the log for details.
Can you confirm that I should be using the rtsp://192.168.110.152:8900/live for the VLC network stream?
Or should it be rtsp://127.0.0.1:8900/live ?voxl:~$ voxl-streamer -i tracking Waiting for pipe tracking to appear Found Pipe detected following stats from pipe: w: 640 h: 480 fps: 30 format: RAW8 Stream available at rtsp://127.0.0.1:8900/live
Here is my settings in voxl-mavcam-manager
{ "snapshot_pipe_name": "tracking", "video_record_pipe_name": "tracking", "default_uri": "rtsp://192.168.110.152:8900/live", "enable_auto_ip": true }
-
I am not able to view any video when executing the voxl-mavcam-manager either.
voxl:~$ voxl-mavcam-manager ================================================================= Parameters as loaded from config file: snapshot_pipe_name: tracking video_record_pipe_name: tracking default_uri: rtsp://192.168.110.152:8900/live enable_auto_ip: 1 ================================================================= Camera name for qgc: Camera 0 Mavlink server Connected Got camera information request auto-detected RTSP URI: rtsp://192.168.110.152:8900/live Got camera information request auto-detected RTSP URI: rtsp://192.168.110.152:8900/live Got camera information request auto-detected RTSP URI: rtsp://192.168.110.152:8900/live
-
-
@Kris Again, you've ran through
voxl-configure-sku
andvoxl-configure-mpa
there is no reason to start a service manually. In your first post you could see thatvoxl-mavcam-manager
was already running as a service.What do your video stream settings look like in QGC? Do you have it setup correctly to expect an rtsp stream?
-
@tom
Yes, I have ran through thevoxl-configure-sku
and thevoxl-configure-mpa
.
This is what my video stream seetings look like in QGC, if its the correct location. -
The video stream settings are under "General", you'll want to enter the RTSP URI there
-
@tom Thank you so much, I just found it and I will try it.
-
@tom
I am sorry, it is still not working.... -
-
-
@Kris What do you see with
systemctl status voxl-streamer
? -
@tom This is what I see.
voxl:~$ systemctl status voxl-streamer ● voxl-streamer.service - voxl-streamer Loaded: loaded (/usr/bin/voxl-streamer; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-03-05 01:18:42 UTC; 13min ago Process: 17793 ExecStartPre=/bin/sleep 5 (code=exited, status=0/SUCCESS) Main PID: 17800 (voxl-streamer) CGroup: /system.slice/voxl-streamer.service └─17800 /usr/bin/voxl-streamer Mar 05 01:31:34 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.11...1 Mar 05 01:31:34 apq8096 voxl-streamer[17800]: Camera server Connected Mar 05 01:31:34 apq8096 voxl-streamer[17800]: rtsp client disconnected, tota...0 Mar 05 01:31:34 apq8096 voxl-streamer[17800]: no more rtsp clients, closing ...y Mar 05 01:31:34 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.11...1 Mar 05 01:31:34 apq8096 voxl-streamer[17800]: Camera server Connected Mar 05 01:31:34 apq8096 voxl-streamer[17800]: rtsp client disconnected, tota...0 Mar 05 01:31:34 apq8096 voxl-streamer[17800]: no more rtsp clients, closing ...y Mar 05 01:31:34 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.11...1 Mar 05 01:31:34 apq8096 voxl-streamer[17800]: Camera server Connected Hint: Some lines were ellipsized, use -l to show in full.
voxl:~$ systemctl status voxl-streamer -l ● voxl-streamer.service - voxl-streamer Loaded: loaded (/usr/bin/voxl-streamer; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-03-05 01:18:42 UTC; 14min ago Process: 17793 ExecStartPre=/bin/sleep 5 (code=exited, status=0/SUCCESS) Main PID: 17800 (voxl-streamer) CGroup: /system.slice/voxl-streamer.service └─17800 /usr/bin/voxl-streamer Mar 05 01:33:33 apq8096 voxl-streamer[17800]: no more rtsp clients, closing source pipe intentionally Mar 05 01:33:33 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.110.159:48596(null) has connected, total clients: 1 Mar 05 01:33:33 apq8096 voxl-streamer[17800]: Camera server Connected Mar 05 01:33:33 apq8096 voxl-streamer[17800]: rtsp client disconnected, total clients: 0 Mar 05 01:33:33 apq8096 voxl-streamer[17800]: no more rtsp clients, closing source pipe intentionally Mar 05 01:33:33 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.110.159:48604(null) has connected, total clients: 1 Mar 05 01:33:33 apq8096 voxl-streamer[17800]: Camera server Connected Mar 05 01:33:33 apq8096 voxl-streamer[17800]: rtsp client disconnected, total clients: 0 Mar 05 01:33:33 apq8096 voxl-streamer[17800]: no more rtsp clients, closing source pipe intentionally Mar 05 01:33:33 apq8096 voxl-streamer[17800]: A new client rtsp://192.168.110.159:48606(null) has connected, total clients: 1
-
voxl:~$ systemctl status voxl-mavcam-manager -l ● voxl-mavcam-manager.service - voxl-mavcam-manager Loaded: loaded (/usr/bin/voxl-mavcam-manager; enabled; vendor preset: enabled) Active: failed (Result: signal) since Tue 2024-03-05 01:18:39 UTC; 20min ago Process: 17657 ExecStart=/bin/bash -c /usr/bin/voxl-mavcam-manager (code=killed, signal=ABRT) Main PID: 17657 (code=killed, signal=ABRT) Mar 05 01:18:39 apq8096 bash[17657]: snapshot_pipe_name: tracking Mar 05 01:18:39 apq8096 bash[17657]: video_record_pipe_name: tracking Mar 05 01:18:39 apq8096 bash[17657]: default_uri: rtsp://192.168.110.152:8900/live Mar 05 01:18:39 apq8096 bash[17657]: enable_auto_ip: 0 Mar 05 01:18:39 apq8096 bash[17657]: ================================================================= Mar 05 01:18:39 apq8096 bash[17657]: Camera name for qgc: Camera 0 Mar 05 01:18:39 apq8096 bash[17657]: Mavlink server Connected Mar 05 01:18:39 apq8096 systemd[1]: voxl-mavcam-manager.service: Main process exited, code=killed, status=6/ABRT Mar 05 01:18:39 apq8096 systemd[1]: voxl-mavcam-manager.service: Unit entered failed state. Mar 05 01:18:39 apq8096 systemd[1]: voxl-mavcam-manager.service: Failed with result 'signal'.
-
voxl:~$ voxl-inspect-sku family code: MRB-D0003 (seeker) compute board: 1 (voxl1) hw version: 7 cam config: 7 SKU: MRB-D0003-1-V7-C7
-
voxl-inspect-mavlink mavlink_sys_status
| ID | Mavlink MSG Name |Counter| Hz | |-------|-----------------------------|-------|------| | 1 | sys_status | 92 | 5.0 |
-
@Kris , please try the following:
- verify the ip address of voxl2
- when you adb into voxl2, the ip address is printed
- you can use
ifconfig
to check the ip address
- make sure
voxl-streamer
is running (it looks like it is based on output ofsystemctl status voxl-streamer
- ping your voxl2 ip from your host machine (just to make sure it can reach voxl2)
- download ffmpeg / ffplay to your host machine
- perhaps something in VLC is not working, but ffmpeg / ffplay usually works
- on linux OS should be able to do it using
apt-get ffmpeg
- for other OS you can find direct download : https://www.ffmpeg.org/download.html
play the video on the host machine (replace
voxl2-ip
with actual ip address)ffplay rtsp://<voxl2-ip>:8900/live
- verify the ip address of voxl2
-
Typically hires is the only pipe with encoding enabled by default, but in this case tracking is being used. Can you make sure encoding is enabled for the tracking camera in voxl-camera-server.conf ?
Or, can you just see if hires_enc is working in QGC first? That's what we ship by default on a fresh install hires_enc to QGC should by enabled by default.