Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Geoff
    @geoff_or:matrix.org
    [m]
    @JEnoch: Knowing now that ros2 topic list won't work, I've confirmed that running the zenoh-dds-bridge in peer mode across NAT without a router on the host PC works just fine. Thanks!
    halfbit
    @halfbit:matrix.org
    [m]
    in testing iceoryx today, that I did a thorough job, it didn't really seem to be much faster than zenoh for my small message scenario, the bonus of zenoh being I don't need to suddenly jump to another protocol for multi-host pub/sub
    *not that I did a thorough job
    yingliangzhe
    @yingliangzhe:matrix.org
    [m]
    Hello Everyone,
    I am trying to subscribe a message from ros2. zenoh dds bridge is already opened on the remote machine. The ros2 is running on remote machine, and my python script is running on local machine. I have sucessfully published a message from my local machine and the remote one has already received it. But If I tried to receive messages from the remote machine, it seems that, the callback function is not called.
    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
    Angelo Corsaro
    @kydos
    @halfbit:matrix.org that would be nice. Thanks!
    Angelo Corsaro
    @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
    Angelo Corsaro
    @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.

    Angelo Corsaro
    @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
    Angelo Corsaro
    @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!
    Angelo Corsaro
    @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
    Angelo Corsaro
    @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:
    Angelo Corsaro
    @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!