Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9471270
  • 博文数量: 1751
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20101
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1751)

文章存档

2024年(27)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2021-03-29 18:35:43

配置参考 
Issue: Fast RTPS floods the network with large pieces of data or fast-published data when operating over WiFi.  即在wifi环形下的 FASTRTPS会带来大量和快速的网络带宽消耗. 解决的方法为 #cross-vendor-tuning. 即 设定 ipfrag_time 和 ipfrag_high_thresh IP片段 以及 使用 best-effort QoS 而不是 reliable.

源码在  
  1. https://github.com/eclipse-cyclonedds
cyclonedds是 Eclipse 开源的dds方案, 目前在IoT领域发展迅猛, 在ROS2即将发布的新G版本 中取代fastrtpdds作为默认数据总线.

C 版本, 还有 Cxx python版本的

cyclonedds 是跨平台的, 支持 linux/ windows / Mac. 
编译: 依赖于 openssl > 1.1  bison.
git clone .git 使用 cmake 编译.
点击(此处)折叠或打开
  1. For Linux

  2. $ cd build
  3. $ cmake -DCMAKE_INSTALL_PREFIX=<install-location> ..
  4. $ cmake --build .

  5. for Windows:
  6. $ cd build
  7. $ cmake -G "" -DCMAKE_INSTALL_PREFIX=<install-location> ..
  8. $ cmake --build .

文档方面
docs 提供了基本的文档, 内容依然相当有限, 仅仅局限于代码资源. 以后会以更丰富的内容, 更方便的格式和通常的位置提供它们。

demo
参考 r
oundtrip 

点击(此处)折叠或打开

  1. $ mkdir demo/roundtrip
  2. $ cd demo/roundtrip
  3. $ cmake ../../examples/roundtrip
  4. $ cmake --build .
其他 helloworld perfscript throughput一样的道理

点击(此处)折叠或打开

  1. $ ./RoundtripPong ## 在一个 shell下
  2. $ ./RoundtripPing 0 0 0 另外一个shell下


DDS的环境配置
linux 环境变量 CYCLONEDDS_URI  

点击(此处)折叠或打开

  1. $ cat cyclonedds.xml
  2. <?xml version="1.0" encoding="UTF-8" ?>
  3. <CycloneDDS xmlns="" xmlns:xsi="" xsi:schemaLocation=" ">
  4.     <Domain id="any">
  5.         <General>
  6.             <NetworkInterfaceAddress>auto</NetworkInterfaceAddress> 可以使用IP地址或者网卡名. 暂不支持配置多张网卡, 以后会支持.
  7.             <AllowMulticast>default</AllowMulticast> 是否多播支持, 在有线网络上多播可以初始发现多个对等实体, 但在wifi网络上仅仅用户SPDP的初始发现, 因为wifi多播非常不可靠.
  8.             <MaxMessageSize>67108864B</MaxMessageSize> 设定RTPS消息的负载大小, 
  9.             <FragmentSize>32768B</FragmentSize设定RTPS消息的分片大小, 用于提升通讯速度.最大 64000
  10.         </General>
  11.         <Internal>
  12.             <Watermarks>
  13.                 <WhcHigh>32MB</WhcHigh> 没有被读出的最大的缓冲数据量

  14.             </Watermarks>
  15.         </Internal>
  16.         <Tracing>
  17.             <Verbosity>config</Verbosity>  Verbosity 可以配置是否跟踪控制, 有很多调试级别可以设置.
  18.             <OutputFile>stdout</OutputFile> 输出可以配置为文件.
  19.         </Tracing>
  20.     </Domain>
  21. </CycloneDDS>
  22. $ export CYCLONEDDS_URI=file://$PWD/cyclonedds.xml

例如我的ROS2的一个版本的内容为

点击(此处)折叠或打开

  1. nvidia@tegra-ubuntu:~$ cat /etc/sysctl.d/10-ros2-dds.conf
    net.core.rmem_default=134217728
    net.core.wmem_default=134217728
    net.core.rmem_max=134217728
    net.core.wmem_max=134217728


    net.ipv4.udp_mem = 102400 873800 134217728
    net.core.netdev_max_backlog = 80000

    net.core.wmem_max=134217728

    net.ipv4.ipfrag_high_thresh=134217728     # (128 MB)
    net.ipv4.ipfrag_time=3
    ### in fastrtps. just Use best-effort QoS settings instead of reliable.


点击(此处)折叠或打开

  1. mc@mc-desktop:~$ cat /etc/ROS2_ENV
  2.  #!/bin/sh

  3. export ROS_DOMAIN_ID=101
  4. export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
  5. export CYCLONEDDS_URI=file:///etc/cyclonedds.xml
  6. export ROS_LOCALHOST_ONLY=1 ##因为目前场景不需要分布式

  7. source /opt/ros/foxy/setup.bash
  8. source /work/ros2_3th/install/setup.bash
  9. source /work/ROS2/foxy/install/setup.bash

  10. export BIGROBOT_MODEL=ant_robot
  11. export TURTLEBOT3_MODEL=waffle

  12. #export PYTHONASYNCIODEBUG=1
  13. export GIT_SSL_NO_VERIFY=1
  14. export SLAM_MAP_DIR=/work/ROS2/SlamMap
  15. export VP_CALLBACK_ECHO=everything_is_OK
参见我的另外一个微博  http://blog.chinaunix.net/uid-27875-id-5842632.html

在虚拟机测试 DDS domain 的 通讯有效范围结果在另外博客, 即 处在同个局域网内的两个机器如果 <Domain id="any"> 设置相同时, 是可以通讯. 没有测试复杂网络, 理论上如果目前dds只能绑定一张网卡情况下是否无法多机通讯的.
http://blog.chinaunix.net/uid-27875-id-5847022.html


阅读(8573) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~