Open source client SDK for communicating with SlamTec Slamware devices such as the M2M1 mapper over ethernet.
An official SDK is available, but appears to be closed source.
Note: For the standalone SlamTec lidar devices, an existing open source driver is already available: rplidar_ros, but this uses a different protocol than the mapper devices.
Currently, the interface is only partially implemented to expose the lidar scan and IMU data as well as some of the mapping data. More of the interface provided by the official SDK can be easily added, as needed, since the protocol is straightforward JSON over TCP. These additional interfaces appear to support their robotic platforms, which use the same protocol.
- asio for TCP communication
- asyncapi_gencpp for json protocol serialization/deserialization code generation from an asyncapi style spec file.
- eigen for some datatypes
- gtest for unit testing
- opencv for some datatypes
- spdlog for formatted logging
GetImuInRobotCoordinate
: Gets IMU sensor dataGetKnownArea
: Gets the current bounds of a mapGetLaserScan
: Gets laser scan dataGetLocation
: Gets the current location estimateGetMapData
: Gets raw map dataGetPose
: Gets the current pose estimateGetRobotHealth
: Gets device health status dataGetSpdVersion
: Gets version informationGetSystemResource
: Gets system information
#include <opensw/client.h>
int main(int argc, char **argv) {
opensw::Client client;
if (client.connect("192.168.11.11", 1445, 500)) {
auto scan = client.getLaserScan();
}
}
This library is agnostic to ROS, but is packaged to work in a ROS1 or ROS2 workspace.
See opensw_ros for a simple ROS laser scan and IMU driver built by wrapping this SDK.