Software
Control Architecture
The overall system diagram is as follows. Operators use their own PC (WinMax2),uConsole + GameController'のWeb画面で TriClops を操縦する。この TriClops を Web から制御する基盤として、**Mimeguri(三囲)** - Yet Another Mobile AI Robotics Infrastructure.
If we define applications that run in a web browser as web apps,” then Mimeguri is undoubtedly the foundation for web apps. That’s right—it’s web app development on on-premises servers. However, what sets this apart from typical web app development is that it requires knowledge and experience with devices—such as sensors—and robotics to implement.
Software Architecture (Web Application Components and Device Components)
TriClops I will explain the software components that make up the system. The core device of TriClops is the Raspberry Pi 4 (hereinafter referred to as “Raspberry Pi”). Although it is incredibly small, it serves as an on-premises server for Linux. Therefore, software development is carried out on the server. In other words, it is used as a development environment for theLinuxsystem.
-
Web Application Development
Set up the configuration typically used in standard web app development. Some old-timers set up the server atsshorsamba. This allows you to log in to the on-premises server (Raspberry Pi 4). You can then proceed to the device development described later. Don’t forget to set up a server athttpas well, so you can verify external connectivity. -
Device Development
Various devices are connected to the on-premises server. Perform connectivity testing on each device individually. Install the driver provided by the vendor and verify that the device appears as a device file. Run the sample code frompythonorC/C++to perform individual testing and confirm that the desired results are achieved.
Best Practices for Controlling Devices via the Web
There are certain technical points—like “chokepoints—that, once you understand them, suddenly make everything clear.
-
Handling by the HTTP Server
In recent software development, you’ll likely find yourself choosingpythonin various situations, andnode.jsas well. There are easy-to-use server implementations for each—for the former,flask, and for the latter,express, for example.postThe set of parameters received here and the resulting endpoint. What this endpoint receives is your business logic—that is, the logic that determines how the device operates—generated from the sample code mentioned earlier in the device development section! -
Handling via WebSocket
Another option is WebSocket. It can be used for a wide range of applications. Above all, it works well with device developers. There are several reasons for this compatibility, but one key factor is that the data looks like raw data—in other words, it feels almost as if you’re working with the data in its unprocessed form. Device developers are accustomed to looking at raw data directly, even before checking logs. This protocol makes it easy to handle such data, and the fact that many methods connect directly toUARTis proof of that.
=>When implementing a dialog-based system, using an HTTP server, streaming, or WebSockets for internal data exchange is the approach that reflects the outdated mindset of old-timers—both in their understanding and implementation.
Web Application Implementation Examples
ROCK and RVCS, which will be discussed in a separate chapter, are examples of web application implementations. ROCK This implementation covers nearly all of the resources at TriClops. RVCS, on the other hand, is an app that makes it easy to use the “uConsole + Game Controller” combination.