我这里使用的 cyber.pb.conf 这个默认的配置文件。
- 撤销其注释,修改为本机地址
transport_conf {
shm_conf {
# "multicast" "condition"
notifier_type: "condition"
# "posix" "xsi"
shm_type: "xsi"
shm_locator {
# ip: "239.255.0.100"
ip: "127.0.0.1"
port: 8888
}
}
participant_attr {
lease_duration: 12
announcement_period: 3
domain_id_gain: 200
port_base: 10000
}
communication_mode {
same_proc: INTRA
diff_proc: SHM
diff_host: RTPS
}
resource_limit {
max_history_depth: 1000
}
}
- 不知道是不是我们缺少什么config文件,我这里的排查后发现,通信会在 transmit 中 进入 Hybrid 模式。这个模式的说法是会自动选择通信方式,但是其类型指针却不会变。所以当自动选择 Hybird –> shm 后,它不会进入 Enable(),也就是说它调度了个寂寞,最后还是没有发送数据。代码位置在 cyber/transport/transport.h;
RETURN_VAL_IF_NULL(transmitter, nullptr);
if (mode != OptionalMode::HYBRID) {
std::cout << " ???? " << std::endl;
transmitter->Enable();
}
std::cout << " !!!! " << std::endl;
# 强制启用
transmitter->Enable();
RETURN_VAL_IF_NULL(receiver, nullptr);
if (mode != OptionalMode::HYBRID) {
receiver->Enable();
}
# 强制启用
receiver->Enable();
- 强制启用后,代码能够通信,有接受打印,证明这两者没有问题。但我使用 相关工具,依旧没有反应。因此我怀疑我们应该是少了什么配置。类似于全局设置一样的东西,规定了一些基础的参数。
./bin/cyber/tools/cyber_channel list
The number of channels is: 0
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END

















- 最新
- 最热
只看作者@wjjjjyourFA 不修改任务代码编译出来的cyber能通信吗?
经过测试 v10 版本是同样的问题。 用 py_talker.py py_listener.py , 启用 transmitter->Enable() 。都会正常显示。