Streaming Stereo Camera
-
Is it possible to stream a stereo/tracking camera on the Seeker (SDK 1.1.2) with voxl-streamer?
-
@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