Display Video Data form ZED Stereolabs (ros topic)


#1

Dear Team,
I’m playing with ZED Stereolabs Camera.
At this stage, my goal is to display ZED Camera stream via FlytConsole or some similar user streaming app.
ZED is running on the TX2, ROS node is started, and camera topics are published.
I can see chosen topics via rviz as in the ZED ROS tutorial.
Simultaneously FLYTOS is running.

My goal is to have lists of this ZED topics on the vision app lists. I want to display ZED visual data, while flying, via flyt console. I want to control my drone and see zed data.

The FlytOS Video Stream uses some kind os USB cam node, and this node is not working with ZED.

I’m thinking that there is a need to go into the code and modified this part of cod, or web api, responsible to displaying video topics.

Can some form flytos dev team support me with this idea.


#2

If your ZED camera driver is working, and you can view the camera stream via image_view, then open your browser and go to url:

http://<ip of NVIDIA>:8080/

You will be able to view the list of all streams, clicking one would open a stream in a window.


#3

ZED is working.

This:

rosrun image_view image_view image:=/zed/right/image_raw_color

Gives me a nice video stream.

Going into:

http://localhost:8080/

Gives me

This site can’t be reached

Flytconsole>Video gives me:

Failed to query Video stream list from FlytOS!!
Please check FlytOS runlog

Ok checked again and modified and now is quite long.

cam_api.launch

I add a lots of ZED camera params and arg and node.
Basically:

<node name=“zed_wrapper_node” pkg=“zed_wrapper” type=“zed_wrapper_node” output=“screen” required=“true”

OK. localhost:8080 gives me a list of streams.:

Available ROS Image Topics:

/flytos/right/image_rect_color (Snapshot)
/flytos/depth/depth_registered (Snapshot)
/flytos/right/image_raw_color (Snapshot)
/flytos/rgb/image_raw_color (Snapshot)
/flytos/rgb/image_rect_color (Snapshot)
/flytos/object/object_image (Snapshot)
/flytos/left/image_raw_color (Snapshot)
/flytos/object/bin_image (Snapshot)
/flytos/left/image_rect_color (Snapshot)

All ok, image is transmited.

And now:

FlytConsole->Video:
I have only one stream on the list:

Select Video: flytos/flytcam/image_capture

After clicking it, no display.
Should be it somewhere in this node or in API:

???

OK litle edit.
Standard Video_Streaming/app.html gives me a nice list of streams.

Now only make it run in the flytconsole.
:slight_smile:


#4

Hi @specyfick ,

Thank you for such a detailed analysis and pointing out the bug/issue.
I have tried to fix the issue, but could not do a lot of testing.

index.js (76.8 KB)

Download the attached file.
Replace the file at

/flyt/flytapps/web/flytconsole/static/js/index.js

with the above attached file.

Once done, clear browser cache and load FlytConsole again.


#5

Thank you for support.
Unfotuantelly,after previous issue flytconsole is not starting automatically.
rosnode list gives me a no master at all. Seems that no ros is running automatically.
Now I’m trying to figure out how to run it. Means launch all flyt ros related nodes.

Start Logs give me that log:

User launch file not found
… logging to /root/.ros/log/86b37352-31ee-11e8-aa19-00044b8cd118/roslaunch-tegra-ubuntu-3045.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
e]2;/flyt/flytos/flytcore/share/core_api/launch/core_api_autopilot.launcha
Traceback (most recent call last):
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/init.py”, line 306, in main
p.start()
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py”, line 268, in start
self._start_infrastructure()
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py”, line 217, in _start_infrastructure
self._load_config()
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py”, line 132, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py”, line 451, in load_config_default
loader.load(f, config, verbose=verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 748, in load
self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 720, in _load_launch
self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 654, in _recurse_load
default_machine, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 654, in _recurse_load
default_machine, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 684, in _recurse_load
val = self._include_tag(tag, context, ros_config, default_machine, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 95, in call
return f(*args, **kwds)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 626, in _include_tag
default_machine, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 654, in _recurse_load
default_machine, is_core, verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 664, in _recurse_load
self._param_tag(tag, context, ros_config, verbose=verbose)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 95, in call
return f(*args, **kwds)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 256, in _param_tag
vals = self.opt_attrs(tag, context, (‘value’, ‘textfile’, ‘binfile’, ‘command’))
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 202, in opt_attrs
return [self.resolve_args(tag_value(tag,a), context) for a in attrs]
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py”, line 183, in resolve_args
return substitution_args.resolve_args(args, context=context.resolve_dict, resolve_anon=self.resolve_anon)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py”, line 370, in resolve_args
resolved = _resolve_args(resolved, context, resolve_anon, commands)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py”, line 383, in _resolve_args
resolved = commands[command](resolved, a, args, context)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py”, line 151, in _find
source_path_to_packages=source_path_to_packages)
File “/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py”, line 197, in _find_executable
full_path = _get_executable_path(rp.get_path(args[0]), path)
File “/usr/lib/python2.7/dist-packages/rospkg/rospack.py”, line 203, in get_path
raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: zed_wrapper
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/flyt/flytos/flytcore/share
ROS path [2]=/opt/ros/kinetic/share


#6

Hello @specyfick,

It seems like you have edited this file:

/flyt/flytos/flytcore/share/core_api/launch/core_api_autopilot.launch

and added code to launch zed_wrapper.
Unfortunately you have not sourced your workspace, and thats why ROS is unable to find the node zed_wrapper.

It is evident from this error:

To solve this issue, source your workspace in the file: /etc/bash.bashrc.
Make sure you add your ‘source’ command at the END of file.


#7

What an obvious solution. I’ve seen the log, seen the error, edited bash.bashrc and forgot to add my catkin_ws with zedwraper.
I’ve edited cam_api.launch, and add all the lanch lines as for the zed camera.

I think, I could simply

  1. source catkin_ws with my zedwraper.
  2. add line with zedwraper launch file to the core_api_autopilot.launch in the #user specific launch file section
  3. rem/comment cam_api.launch line in the core_api_autopilot.launch.

A lot of lessons learned.

To sum up:
Java file changed.
Source in bash.baschrc added
cc rebooted
all is working perfectly.

Now is the time to find a new issue :slight_smile: and play witch FlytOS…

Thanks, solved.


#8

Closing the issue now.

I would like to add a point:

#user specific launch file
<group if="$(arg user_launch_exists)">
<include file="$(find core_api)/launch/user.launch"/>
</group>

This snippet essentially expects users to create a user.launch file beside core_api_autopilot.launch, and users should add their specific nodes in that file.
This essentially makes sure your edits do not get overwritten when FlytOS autoupdates itself, and overwrites core_api_autopilot.launch with the new file.


#9