Leveraging a Functional Approach for More Testable and Maintainable ROS 2 Code
● Robotics Engineer on the services team at PickNik Robotics ○ Contributed to a wide variety of client projects: remotely operated underwater inspection vehicles, autonomous mobile base for agriculture maintain, and extend ● At the end of a services project, code is handed over to the client ● How can the client expect proper operation of the software once they start developing on top of it?Why give maintain, and extend ● At the end of a services project, code is handed over to the client ● How can the client expect proper operation of the software once they start developing on top of it? Answer:0 码力 | 200 页 | 1.77 MB | 5 月前3Session Types in C++
happening. 30Session? • Can we describe a valid sequence of interactions? • Interaction diagram Client Server int int ADD DIV int double end Branching 31Session? • Can we describe a valid sequence operation is allowed!) • Then, again receive int • ... ?int; ?int; &(ADD: !int, DIV: !double); end Client Server int int ADD DIV int double end *Name “Behavioral types” is also used. See “Behavioral chan.send(x); auto r = chan.recv(); cout << "Result: " << r << endl; chan.close(); } Client Server int int ADD int ?int; ?int; !int; end 59void serverFunc(Comm chan) { auto v1 = chan 0 码力 | 89 页 | 1.55 MB | 5 月前3Retiring the Singleton Pattern
CommWrapper(int service_id = SERVICE_ID); Response send(const Request& req); private: TcpClient raw_client; }; Bloomberg 14 struct Service { static CommWrapper comm_; };// Completed transformation of raw_client; }; Bloomberg 16// New wrapper class to replace singleton CommWrapper.h class CommWrapper { enum { SERVICE_ID = 249409 }; public : CommWrapper(int service_id = SERVICE_ID):raw_client(service_id){ rvice_id){...}; virtual Response send(const Request& req); private: TcpClient raw_client; }; Bloomberg 17// Completed transformation of original function with backwards compatible non-singleton version0 码力 | 70 页 | 1.59 MB | 5 月前3Conan 1.3 Documentation
com/conan-io/conan 2.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The conan client: this is a console/terminal command line application, containing the heavy logic for package creation and consumption. Conan client has a local cache for package storage, and so it allows you to fully create and test packages offline0 码力 | 397 页 | 2.77 MB | 1 年前3Conan 1.5 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 214 13.19 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 214 13.20 Use a generic CI with Conan com/conan-io/conan 2.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 422 页 | 2.85 MB | 1 年前3Conan 1.6 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 211 12.21 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 212 12.22 Use a generic CI with Conan com/conan-io/conan 1.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 428 页 | 2.87 MB | 1 年前3Conan 1.7 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 213 12.21 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 214 12.22 Use a generic CI with Conan com/conan-io/conan 1.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 433 页 | 2.95 MB | 1 年前3Conan 1.9 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 224 13.22 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 224 13.23 Use a generic CI with Conan com/conan-io/conan 1.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 470 页 | 3.05 MB | 1 年前3Conan 1.16 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 254 13.23 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 255 13.24 Use a generic CI with Conan com/conan-io/conan 1.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 545 页 | 4.34 MB | 1 年前3Conan 1.15 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . 252 13.23 How to check the version of the Conan client inside a conanfile . . . . . . . . . . . . . . . . . . . . 253 13.24 Use a generic CI with Conan com/conan-io/conan 1.2 Decentralized package manager Conan is a decentralized package manager with a client-server architecture. This means that clients can fetch packages from, as well as upload packages created by the client, and if binaries are built from sources, that compilation is also done by the client application. The different applications in the image above are: • The Conan client: this is a console/terminal0 码力 | 540 页 | 4.22 MB | 1 年前3
共 121 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13