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 at ssh or samba. 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 at http as 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 from python or C/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 choosing python in various situations, and node.js as 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 to UART is 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.