<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[使用Galileo SDK跨局域网遥控机器人]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/bluewhalerobot/GalileoSDK" target="_blank" rel="noopener noreferrer">GalileoSDK</a>是由我们开发的机器人导航系统SDK。通过SDK用户能够方便的操控机器人。现在小强用户已经可以免费体验到SDK的功能了。SDK内部集成了物联网连接功能。设置完成后用户能够通过SDK跨局域网遥控和获取机器人状态。下面介绍物联网功能的配置方法。</p>
<p dir="auto">首先获取自己机器人的ID<br />
在机器人上执行</p>
<pre><code>bwgetid
</code></pre>
<p dir="auto">会有如下输出</p>
<p dir="auto"><img src="/assets/uploads/files/1563612115901-1105355d-9a4e-4ef7-bcd3-0f90f9756c1d-image.png" alt="1105355d-9a4e-4ef7-bcd3-0f90f9756c1d-image.png" class=" img-responsive img-markdown" width="725" height="41" /></p>
<p dir="auto">这一长串字符串就是你的ID</p>
<p dir="auto">然后向 <code>http://iot.bwbot.org/api/device</code>发送post数据，内容为此ID。</p>
<p dir="auto">比如利用curl</p>
<pre><code class="language-bash">curl -H "Content-Type: application/json" -X POST -d '"8FB56D27D6C961E9036F62182ADE9544D71E23C31E5DF4C7DD692B9E4296A131434B1066D365"' http://iot.bwbot.org/api/device
</code></pre>
<p dir="auto">返回如下</p>
<pre><code class="language-json">{"status":"OK","description":"q2x9TeimxvuQh3UYpy1jD4729ac3QldX"}
</code></pre>
<p dir="auto">description中的这一长串字符串就是你的物联网客户端密码，我们需要将其复制到<a href="https://github.com/BluewhaleRobot/system_monitor/blob/kinetic_service_bot/utils/config.py#L47" target="_blank" rel="noopener noreferrer">system_monitor的IOT_SECRET</a>中。然后在<code>startup/launch/startup.launch</code>中添加iot节点。默认startup中是没有iot节点的。</p>
<pre><code>&lt;node pkg="system_monitor" type="iot_client.py" name="iot_client" respawn="true" respawn_delay="10"/&gt;
</code></pre>
<p dir="auto">这样机器人端已经设置完成。剩下的就是写一个物联网连接程序了。下面是一个c++的例子</p>
<pre><code class="language-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 &lt;&lt; "Connect to server failed" &lt;&lt; std::endl;
    }
    while (true)
    {
        galileo_serial_server::GalileoStatus status;
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
        sdk.SetSpeed(0.1, 0);
        Sleep(5 * 1000);
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
        sdk.SetSpeed(0, 1);
        Sleep(5 * 1000);
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
        sdk.SetSpeed(-0.1, 0);
        Sleep(5 * 1000);
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
        sdk.SetSpeed(0, -1);
        Sleep(5 * 1000);
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
        sdk.SetSpeed(0, 0);
        Sleep(5 * 1000);
        sdk.GetCurrentStatus(&amp;status);
        std::cout &lt;&lt; "currentSpeedX: " &lt;&lt; status.currentSpeedX &lt;&lt; std::endl;
        std::cout &lt;&lt; "currentSpeedTheta: " &lt;&lt; status.currentSpeedTheta &lt;&lt; std::endl;
    }
}

int main()
{
	testIOTSetSpeed();
}
</code></pre>
<p dir="auto">机器人会被这个程序遥控着进行前进后退等等。</p>
]]></description><link>http://community.bwbot.org/topic/773/使用galileo-sdk跨局域网遥控机器人</link><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 21:51:54 GMT</lastBuildDate><atom:link href="http://community.bwbot.org/topic/773.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Jul 2019 09:00:48 GMT</pubDate><ttl>60</ttl></channel></rss>