ROS交流群
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
使用Galileo SDK跨局域网遥控机器人
-
GalileoSDK是由我们开发的机器人导航系统SDK。通过SDK用户能够方便的操控机器人。现在小强用户已经可以免费体验到SDK的功能了。SDK内部集成了物联网连接功能。设置完成后用户能够通过SDK跨局域网遥控和获取机器人状态。下面介绍物联网功能的配置方法。
首先获取自己机器人的ID
在机器人上执行bwgetid
会有如下输出
这一长串字符串就是你的ID
然后向
http://iot.bwbot.org/api/device
发送post数据,内容为此ID。比如利用curl
curl -H "Content-Type: application/json" -X POST -d '"8FB56D27D6C961E9036F62182ADE9544D71E23C31E5DF4C7DD692B9E4296A131434B1066D365"' http://iot.bwbot.org/api/device
返回如下
{"status":"OK","description":"q2x9TeimxvuQh3UYpy1jD4729ac3QldX"}
description中的这一长串字符串就是你的物联网客户端密码,我们需要将其复制到system_monitor的IOT_SECRET中。然后在
startup/launch/startup.launch
中添加iot节点。默认startup中是没有iot节点的。<node pkg="system_monitor" type="iot_client.py" name="iot_client" respawn="true" respawn_delay="10"/>
这样机器人端已经设置完成。剩下的就是写一个物联网连接程序了。下面是一个c++的例子
#include "GalileoSDK.h" #include "galileo_serial_server/GalileoStatus.h" #ifndef _WIN32 void Sleep(uint64_t miliseconds) { usleep(miliseconds * 1000); } #endif void testIOTSetSpeed() { connected = false; GalileoSDK::GalileoSDK sdk; //通过物联网连接机器人,第一个参数是机器人id,第二个参数是连接超时时间,第三个为机器人密码由[system_monitor中的 IOT_PASSWORD](https://github.com/BluewhaleRobot/system_monitor/blob/kinetic_service_bot/utils/config.py#L49)指定,最后是连接回调函数和离线回调函数。 if (sdk.Connect("8FB56D27D6C961E9036F62182ADE9544D71E23C31E5DF4C7DD692B9E4296A131434B1066D365", 10000, "xiaoqiang", NULL, NULL) != GalileoSDK::GALILEO_RETURN_CODE::OK) { std::cout << "Connect to server failed" << std::endl; } while (true) { galileo_serial_server::GalileoStatus status; sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; sdk.SetSpeed(0.1, 0); Sleep(5 * 1000); sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; sdk.SetSpeed(0, 1); Sleep(5 * 1000); sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; sdk.SetSpeed(-0.1, 0); Sleep(5 * 1000); sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; sdk.SetSpeed(0, -1); Sleep(5 * 1000); sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; sdk.SetSpeed(0, 0); Sleep(5 * 1000); sdk.GetCurrentStatus(&status); std::cout << "currentSpeedX: " << status.currentSpeedX << std::endl; std::cout << "currentSpeedTheta: " << status.currentSpeedTheta << std::endl; } } int main() { testIOTSetSpeed(); }
机器人会被这个程序遥控着进行前进后退等等。