Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    Does someone has the same experience?
    Julien Enoch
    @JEnoch
    Hi @yingliangzhe:matrix.org ,
    if you activate the debug logs for the bridge (exporting RUST_LOG=debug environment variable prior to start it), do you see in logs a route being created for the topic you’r subscribing to ?
    The log should be something like:
    New route: DDS ‘…’ => zenoh ‘…’
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    for the zenoh publisher and ros2 subscriber I did see the log New route: DDS '...'
    But for the zenoh subscriber and ros2 publisher did not
    New session link established from 1BC92346AA5B4E54BB9215D8B0B4FD3F: tcp/xx.xx.9.50:7447 => tcp/xx.xx.8.224:33282
    I have only seen this log
    Julien Enoch
    @JEnoch
    Is your Python script using the zenoh API or the ROS2 API ?
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    That uses the zenoh API. I only have the ros2 on remote machine.
    And I noticed, that the 'New route' log message will be showed on the terminal, even if I just started the ros2 node, the session from my python script has not been opened.
    I can see it, even if I only start the RUST_LOG=info
    Julien Enoch
    @JEnoch
    Yes, the bridge creates the routes as soon as it detects a ROS2/DDS publisher or subscriber. No matter if there is a remote publisher or subscriber. (those are local routes actually, between DDS protocol and zenoh protocol).
    If you don’t see a route for the DDS publication you want to subscribe to, it means that the bridge didn’t discovered this DDS publisher. In debug logs, search for a log containing DiscoveredPublication and the name of your topic.
    If you can’t find one, it means your ROS2 is not declaring this publication.
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]

    I have found the log message,
    firstly I start the zenoh bridge dds and it gives me the 'New Router DDS ' message.
    Then I started the ros2 node hello_publisher with the topic name hello_world.
    The log message shows:

    [2021-05-17T09:52:36Z DEBUG zenoh_bridge_dds] DiscoveredPublication(rt/hello_world, std_msgs::msg::dds_::String_, None
    [2021-05-17T09:52:36Z DEBUG zenoh_bridge_dds] Declaring resource /rt/hello_world
    [2021-05-17T09:52:36Z DEBUG zenoh::net::routing::resource] Register resource /rt/hello_world
    [2021-05-17T09:52:36Z INFO  zenoh_bridge_dds] New route: DDS 'rt/hello_world' => zenoh '/rt/hello_world' (rid=16) with type 'std_msgs::msg::dds_::String_'
    [2021-05-17T09:52:36Z DEBUG zplugin_dds] Local Domain Participant IH = 10456347892458033829
    [2021-05-17T09:52:36Z DEBUG zplugin_dds] Discovery data from Participant with IH = 10456347892458033829
    [2021-05-17T09:52:36Z DEBUG zplugin_dds] Discovered endpoint is keyless: true
    [2021-05-17T09:52:36Z DEBUG zplugin_dds] Ignoring discovery from local participant: rt/hello_world

    After that I started on my local machine the python script, the log message showed :
    New session link established from 6F2AC0C5A89D4050AC9473305CD6E25C: tcp/xx.xx.9.50:7447 => tcp/xx.xx.8.224:33470

    I think the connection is already built, and the zenoh bridge has also found the publisher on topic hello_world.

    received this message after declaring the subscriber within a python script on local machine
    [2021-05-17T10:05:43Z DEBUG zenoh::net::routing::resource] Register resource rt/hello_world
    [2021-05-17T10:05:43Z DEBUG zenoh::net::routing::pubsub] Register peer subscription rt/hello_world (peer: 6F2AC0C5A89D4050AC9473305CD6E25C)
    Julien Enoch
    @JEnoch
    And does your Python script well subscribes to /rt/hello_world (with starting /) ?
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    No, I did not!!! Thank you so much!!!
    That is the point
    Julien Enoch
    @JEnoch
    Great! Glad to help :smile:
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    👍️
    halfbit
    @halfbit:matrix.org
    [m]
    are there any major blockers to using stable rust?
    nightly makes a few things painful
    I saw this, but it doesn't seem like any thing there is a must have? eclipse-zenoh/zenoh#18
    halfbit
    @halfbit:matrix.org
    [m]
    actually I got it to compile on stable pretty easily
    I'll PR
    kydos
    @kydos
    @halfbit:matrix.org that would be nice. Thanks!
    kydos
    @kydos
    @halfbit:matrix.org can you please take a look at the CI for your PR?
    halfbit
    @halfbit:matrix.org
    [m]
    will do
    expploitt
    @expploitt
    Hello all, I'm using the zenoh dissector for wireshark and I do not understand some things. When I launch a pub/sub in peer mode, I can only see the multicast frame without zenoh header
    imagen.png
    kydos
    @kydos
    @expploitt that normal as the peer do not use the 7447 port to communicate, they only use that for scouting otherwise multiple peers on the same machine would have a conflict. If you are trying to debug, then just enable info logging and you’ll get the locator at which each peer is reachable. There you’ll see the port. Once you know that filter the traffic by that port and use the wire-shark “parse as” option to parse the packets as zenoh. HTH.
    6 replies
    Geoff
    @geoff_or:matrix.org
    [m]

    JEnoch (Julien Enoch):

    The ROS2 daemon is only queried by the ROS2 cli tools. Regular ROS2 applications directly use their own ROS2 graph cache managed by rcl+rmw

    This is not necessarily true. The daemon was mainly made for the CLI tools to keep them responsive and accurate, but other applications can use it if they want to. I think that rviz uses the daemon, actually.

    What we are now considering is to allow the user to configure a zenoh bridge with a set of topics for which he wants the discovered entities to be propagated to a remote bridge. Receiving those discovery information, the remote bridge will create the corresponding DDS entities, allowing DDS advertisement and completion of the ROS2 graph by all ROS2 nodes.
    Of course a user will be able to set "*" for this set of "propagated" topics, meaning that all DDS entities will be proactively created, but with consequences on discovery time and scalability.

    I think this gives the best of both worlds. It allows us to fence of different sections of a widely-distributed application, while also allowing the dynamic nature of ROS to be maintained where it is needed. And for unknown system introspection, * can be used.

    Gergely Kis
    @kisg

    Hi! We have been testing rmw_zenoh in the past week, and we were able to run a basic distributed application in the following setup:
    ROS1 node -> ros1_bridge (with the ROS2 side running rmw_zenoh) -> Zenoh Router -> Android emulator -> ROS2 node (running with rmw_zenoh)

    We are also looking at adding support for shared memory transport in rmw_zenoh (we got delayed this week by other projects). From what I have seen so far, I think that rmw_zenoh for ROS2 apps could provide a superior solution compared to using DDS on the ROS2 side and then bridging it over Zenoh. It just brings in unnecessary complexity, if the whole system could just run Zenoh as the ROS2 backend. Obviously, rmw_zenoh is not yet production ready, and as we discussed it here before, it might make sense to reimplement it in Rust instead of using the Zenoh-C binding, but in the long run this might become a better solution.

    kydos
    @kydos
    Hello @kisg, thanks for the update as I said earlier we would be more than happy to collaborate on a Rust based RMW. We would even like to go a bit furhter, in the sense that there are some aspects where the way in which zenoh works would further simplify some aspects of the operation of ROS2 robots. In short, we would like to (1) allow to leverage zenoh widlcards on ROS2 namespaces and ROS2 topic names and (2) expose zenoh queries to ROS2. Perhaps we could create a repo for zenoh-rust-rmw on the eclipse project and use to share design discussion and also collaborate on the implementaiton. Let me know.
    6 replies
    kydos
    @kydos
    Hello everyone, I just wanted to let you know that I’ve commited the changes necessary to leverage the new zenoh synchronous API on zenoh-c. These are few small changes but with a big impact in terms of performances for zenoh-c. If you want to give it a try the branch to use is https://github.com/eclipse-zenoh/zenoh-c/tree/sync
    In any case we should be merging the sync branches before the end of the month.
    Joe Speed
    @joespeed
    Clemson University Deep Orange 12 team teleop drove via Zenoh an Indy Autonomous Challenge racecar running ROS 2 Foxy Autoware.Auto CycloneDDS around the racetrack in Indy. Sorry I'm not yet allowed to share the video😁 https://cuicardeeporange.com/project/deep-orange-12/
    Frédéric Desbiens
    @fdesbiens
    Looking forward to watching it, @joespeed!
    kydos
    @kydos
    I hope I’ll actualy get to drive myself one of those beutiful Dallara ;-)
    @joespeed thanks for sharing with the community, we are super happy to be able to help the Indy Autonomous Challenge team!
    Julien Enoch
    @JEnoch

    Hi zenohers and especially the ROS2 users!

    I just merged a bunch of updates in the master branch of zenoh-plugin-dds. It now includes:

    Note that the REST API could also be used for pub/sub with ROS2 in Javascript via a simple web page! A blog on this will come soon… :wink:

    expploitt
    @expploitt
    Hello all! I've been modifying the zenoh-dissector in order to achieve a better performance. For that I decided to use a heuristic dissector. If someone wants to test it, I opened a pull request in the @cguimaraes work in cguimaraes/zenoh-dissector#15
    kydos
    @kydos
    Hello @expploitt, happy to give it a try! Will let you know.
    Shan Desai
    @shantanoo-desai
    Hello all. Was amazed by the talk that Angelo gave yesterday at Eclipse Virtual IoT and Edge Days for Zenoh and definitely giving Zenoh a try in my research projects. Happy to be on board!
    Julien Enoch
    @JEnoch
    Hi @shantanoo-desai, welcome on board! Feel free to post here any questions or suggestions of improvements you may have using Eclipse zenoh. We would also be happy to know more about your use cases and results of experiments with zenoh :smiley:
    kydos
    @kydos
    Hello @shantanoo-desai, I am glad that you enjoyed the talk. Welcome to your community, let us know if there is anything we can help with!
    Frédéric Desbiens
    @fdesbiens
    Thanks for attending and for the feedback, @shantanoo-desai!
    Gergely Kis
    @kisg
    Hi, I just finished watching Angelo's great presentation. I was originally only interested in Zenoh as a potentially better ROS2 backend. But now I am wondering if Zenoh could be used as an alternative to Apache Kafka with the system configured in a way that can match Kafka's "persistent message queue" semantics (e.g. using Storages). I could even imagine it as a drop-in replacement if a "Kafka to Zenoh" protocol bridge would be implemented similar to the current DDS bridge. The Eval primitives could provide a great way to implement stream processing components, similar to Kafka Streams. What do you think?
    kydos
    @kydos
    @kisg we think along the same lines. To this end, you may be interested in taking a close look to zenoh-flow
    There isn’t code yet, but we have been doing R&D and have an initial design. We will share it openly with the community for comments probably next week.
    You’ll see commits flowing in the weeks to come. In essence, we want to leverae zenoh to build cloud-to-device data-flows processing pipelines.