A ROS package for multi-robot message transport based on zmqpp
This package is a separate package version of the swarm_bridage
used in CREPES3
- HEADER Only, easy to use
- High Performance, capable to transfer odom message higher than 1000Hz with out fluctuation, tested on Ubuntu 18.04 / 20.04
- Automatically get self
ip
, and Broadcast selfid
and selfip
using UDP. - Automatically Connect with others Under Same Network, using TCP to transport messages in need
- ROS-like publish/subscribe API
- Capable of simulating Network Delay, by setting
simulation
totrue
and givingvirtual_network_delay
manually in the launch file
Install zmqpp first
sudo apt install libzmqpp-dev
See example for usage
// Initialization
SwarmBridge::Ptr swarm_bridge(new SwarmBridge(nh));
// Register subscriber
swarm_bridge->subscribe<${YOUR_MSG_TYPE}>("${YOUR_TOPIC_NAME}", [&](${YOUR_MSG_TYPE} msg){${YOUR_CODE});
// Publish
swarm_bridge->publish<${YOUR_MSG_TYPE}>("${YOUR_TOPIC_NAME}", msg);
Change ${YOUR_MSG_TYPE}
into the message type you want to transfer, like nav_msgs::Odometry
or visualization_msgs::Marker
.
Change ${YOUR_TOPIC_NAME}
into the name of the topic, just like ros.
Implement your customized code to substitute ${YOUR_CODE}
Sometimes there may meet situations that cannot automatically get ip
in proper network.
To deal with this situation, please modify the param in launch file of net_mode
to manual
and set self_ip
and broadcast_ip
under proper network.
- separate different groups for broadcast