RoboCom develops secure and agile software defined systems and solutions to take the most advanced research and development (R&D) from the laboratory to the marketplace. Serving both government and industry, we collaborate across technical and scientific disciplines to generate real innovation and create high value for our clients. Our team of system, software, project management, and marketing engineers are experts in a broad range of disciplines.
Our system engineers have decades of experience in the field of wireless technology, digital communications, quality of service (QoS), design, implementation, and modeling and simulation (M&S). Our software engineers are experts in various software languages, operating systems, networking protocols, modeling and simulation tools, database design, and application domains. Our program/project managers have experience planning and leading the development of software/firmware/hardware based projects.
RoboCom performs software development for all levels of programming of a software stack, including device driver development, embedded systems programming, desktop and enterprise developments. From our many years of experience, we have developed an extensive library of reusable software, as well as testing and visualization tools to assist in our engineering development efforts. Refer to our products for more information on reusable software that we offer that may be used "as is" or customized to your specific needs. This expertise helps us to complete tasks with agility, efficiency and cost effectiveness. We operate with the highest ethical standards in all tasks and do not subcontract.
Select by clicking any item from the list below for additional information.
Our engineers are well rounded and have domain expertise in a broad range of domains. These domains include digital secure communications, network modeling and simulation, creation of network protocol stacks for embedded systems, healthcare electronic medical records, real time embedded systems, RF communications, networking, HMI, fat and thin client GUI development, embedded software for manufacturing test, cross platform development, mainframe connectivity, and enterprise development domains with database back ends. We have program/project management experience across the full software development life cycle.
Network Technologies and Secure Communications
Networking technologies is a principal focus and a strong point for our company. We are proficient in designing, developing, and deploying network-based systems incorporating LAN, WAN, and wireless technologies using commercial and Linux-based equipment. We have an in-depth knowledge of networking protocols, networking security, network modeling and simulation, custom network protocols, and network system design and deployment.
We are well-versed in networking protocols and secure communications, such as TCP/IP, HTTPS/S, FTPS/FTP, PPPoE, PTP, TLS/SSL, Telnet, ICMP, Tunnels, PPP, ARP, DHCP, NTP, and RIP. We have created entire OSI protocol communications stacks for embedded communications devices. We design custom application which communicate over TCP/IP and UDP protocols. We use raw socket programming for Ethernet Layer 2 network device software which implements transparent smart bridging, and for implementing store and forward packet handling with tunneling/IP in IP encapsulation.
Network Modeling and Simulation Technologies
When developing communications equipment and networking protocols we leverage modeling and simulation tools to allow for evaluating network based solutions under test conditions that would be difficult or impossible to created in test labs. We predominately use the OPNET simulation tool for network modeling. OPNET is a tool to simulate the behavior and performance of wireless and wired networks.
We utilizes a “common coded” principle between simulation and platform deployment code, such that essential algorithms and messaging are initially developed and tested in the OPNET framework, and then the same algorithm code is deployed to a hardware platform. We developed this technique before it was in use in the communications industry. The technique developed ensures a high fidelity between the simulation and real time platforms resulting in a significant reduction in problems after deployment of user equipment.
For more information on common coded architecture, refer to the whitepaper Common Code Simulation Architecture for Embedded Wireless Routing Protocols. For more information on our OPNET capabilities, refer to our OPNET Wireless Networking Suite.
If you need to perform network modeling using OPNET Modeler, we can help out on that effort substantially as we have significant experience and expertise in this area.
Software Languages and User Interface Development
We have developed an Android like touch screen interface in Qt for an embedded instrument with a modern cell phone fluid interfaces including touch screen control, swipe navigation, rich multi-line list controls, embedded keyboards, pop up context menus, icon based selection screens, animated scene transitions, over scroll animations, international language support, kinetic scrolling, and real time 2D line graphing with autoranging, autoscaling, and data decimation.
For some of our embedded web developments on low resource platforms, we utilize a custom Qt/C++ based HTTPS/HTTP web server that is integrated and combined with the application server itself in a one tier architecture. One-tier, or single tier web application architectures involves putting all of the required components for a software application or technology within a single application or process. The single tier embedded web server allows us to not use a database or inter-process communication (IPC) as an intermediary between web server and application server, integrating logging and setting of web related thread priorities, simplifying deployment and interface complexity, decreasing latency and enhancing response timing. The web framework architecture is inspired by Java scriplets, with the application code handlers written in C++ separate from the web HTML content, separating web HTML design from web application programming. This framework is modular and easy to extend for additional functionality. For more information on embedded systems or resource constrained single tier web server architectures and content implementations, refer to our low latency scheduler product.
We have also created a multi-tier based web solutions separating the web server tier from the platform application tier. This type of solution architecture uses a database and the intermediary between the web server and the application. The web server tier typically consists of a COTS web server combined with custom web content. We have created a reliable multi-tier web solution for an embedded platform using the lighttpd web server along with the popular Django framework for web content. The Django framework follows the Model-View-Controller (MVC) design pattern. The web server interfaces with the custom Django based content using the FastCGI interface protocol. A SQLite database is used as the backend data store, and for communications between the platform application tier and the web interface tier. For more information on our web based embedded real time control and status interface developments, refer to our Web Monitor & Control Product.
Our engineers have spent many years studying Windows and Linux for both the desktop and embedded hardware environments. We have implemented solutions that are either operating system dedicated or cross platform for both Windows and Linux (RedHat and Debian variants) desktop operating systems. We predominately use Qt for cross platform C++ development (headless or GUI based), but have also used wxWidgets for C++ or Project Mono for C# cross platform GUI developments.
We have developed software for various generalized embedded Linux distributions (e.g. Arch Linux, Embedded Debian, UbuntuMATE, Raspian, OpenWRT, OpenEmbedded, Linaro, ADI Custom Linux, MontaVista Linux). We have built and customized deployed Linux kernels from kernel source code for performance, removing unused capabilities and adding necessary features and drivers.
For the embedded Linux environment, we have experience with platform tuning to achieve reliable near real time behavior from either a generalized Linux distribution, or a stripped down embedded Linux distribution. This is cost effective alternative to the use of a real time operating system (RTOS) based development. Platform tuning includes support for CPU shielding to take advantage of a multi-core processors and using real time priorities for application threads. CPU shielding (CPU thread pinning and CPU core isolation) is a practice where on a multiprocessor system or on a CPU with multiple cores, real-time tasks can run on one CPU or core while non-real-time tasks run on another. For more information on achieving near real time behavior on an embedded or desktop Linux operating system platform, refer to our low latency scheduler product.
If you are converting an RTOS based implementation to embedded Linux, we can help in that effort.
Embedded Systems and RTOS
Our engineers have spent years developing real time embedded applications based on various processor architectures (x86, ARM, Coldfire, TI DSP, PowerPC, TI ultra-low-power MSP430) in various bit widths (8, 16, 32, and 64 bits) and real time operating systems (RTOS). We have developed solution using both commercial and open source RTOS (e.g. Coldfire MQX, TI-RTOS, TI DSP/BIOS, uClinux) as well a lightweight home grown custom RTOS.
Software Frameworks and Design Patterns
Our software engineers have experience with a wide array of software frameworks and design patterns including DotNet, Mono, Django/Python, Qt, QML, WPF, WinForms, Microsoft Foundation Classes (MFC), ActiveX/OLE, Windows SDK programming, COM/DCOM, Office Automation, Office Addins, MVC, OpenGL, ATL, WordPress, and DirectX.
Our engineers have developed commercial grade custom client/server database centric applications in C#, C++, and C that utilize both enterprise class databases such as Oracle, SQL Server, and MySQL, desktop databases such as Microsoft Access and VBA, to embedded system resource constrained databases such as SQLite. We have designed and developed SQL relational database management systems (RDBMS) and database schema to proper normalized form, and have experience with database views, stored procedures, and triggers. We have converted multiple projects based on converting legacy Excel formatted data repositories into one and two tier database designs. For more information on automated database driven source code generation, refer to our application source code generation product.
If you need to create a client server based application or need to create and/or normalize a database schema -- we can help.
Simple Network Management Protocol (SNMP) is an Internet-standard protocol for collecting and organizing information about managed devices on IP networks and for modifying that information to change device behavior. It is used for collecting information from, and configuring, network devices, such as servers, printers, hubs, switches, and routers on an Internet Protocol (IP) network.
Many of the applications that we have developed for embedded systems are networked communications devices, and as such, provide an SNMP agent interface to allow for network management from an upstream SNMP manager. We have implemented SNMP agents on several projects providing support for SNMP scalars, SNMP read-only and read-write tables, and notifications from the agent to the SNMP manager via SNMP traps. Security for the SNMP communications utilizes the security built into the SNMP v3 protocol.
SNMP agents expose management data on the managed systems as variables. The variables accessible via SNMP are organized in hierarchies. SNMP uses an extensible design which allows applications to define their own hierarchies and metadata. These hierarchies, and other metadata (such as type and description of the variable), are described by management information bases (MIBs).
We have developed custom MIBs for the SNMP agent interfaces provided by our embedded systems developments, as well as preserving legacy and augment MIB content for existing products to provide backwards SNMP compatibility.
We have developed a custom control application implementing a dynamic TDMA scheduler which utilizes SNMP management to query Cisco routers for unicast and multicast multihop link connections and link metrics.
If you need to add SNMP agent or management capabilities to your existing or future developed networked device, or require the development of a custom MIB, we have experience and can reduce development and deployment risk.
For most of the embedded and desktop developments we have created, and application will typically need initial boot up configuration and then perhaps runtime configuration. We favor the use of Extensible Markup Language (XML) documents for configuration as it provides validation ranges and settings for parameters.
For XML configuration, we initially develop an XSD (XML Schema Definition) file that is a World Wide Web Consortium (W3C) recommendation that specifies how to formally describe the elements in an Extensible Markup Language (XML) document. We generate XML W3C validation routines to validate an XML instance document is properly formatted.
We can help If you need to create or add XML document support with W3C validation capabilities to your application.
For application deployment to various operating systems, we have developed formal package management installation applications for Windows platforms (Visual Studio based setup applications and InstallShield), desktop and embedded and desktop 32-bit and 64-bit Linux in the form of RPMs or DEBs. The installation applications provide distribution of program binaries, web content, startup and operating configuration, and automatically starts and stops requisite services or daemons.
If you need to create a formalized deployment package for various operating systems, we have experience is this area and can help.
Software Reliability and Design
More than a decade ago, the Mars Pathfinder landed to a media fanfare and began to transmit data back to Earth. However, a few days later, the flow of information and images was interrupted by a series of total systems resets. How this problem was diagnosed and resolved still makes for a fascinating tale for software engineers.
The Pathfinder's applications were scheduled by a real time embedded operating system providing pre-emptive priority scheduling of threads, tasks were executed as threads with priorities determined by their relative urgency. The meteorological data gathering task ran as an infrequent, low priority thread, and used the information bus synchronized with mutual exclusion locks (mutexes). Other higher priority threads took precedence when necessary, including a very high priority bus management task, which also accessed the bus with mutexes.
Unfortunately in this case, a long-running communications task, having higher priority than the meteorological task, but lower than the bus management task, prevented it from running. Soon, a watchdog timer noticed that the bus management task had not been executed for some time, concluded that something had gone wrong, and ordered a total system reset. Eventually, engineers diagnosed and fixed the problem, eventually spotting a priority inversion. A priority inversion occurs when a high priority task is indirectly pre-emptied by a medium priority task "inverting" the relative priorities of the two tasks.
We pride ourselves in developing quality software solutions that operate reliably 24x7 on various operating system and hardware platforms. Nearly all of the applications we develop are multi-threaded and vary in complexity from moderate to complex. Most all of our custom solutions decompose a problem space into a multi-threaded application running under either an embedded RTOS distribution or a desktop operating system, with tasks of different relative priorities.
To avoid the issues illustrated by the Mars Pathfinder problem, we utilize lock free programming and concurrency collections to avoid common errors associated with resource locking in multi-threaded programming (e.g. priority inversions, deadlocks, live locks, convoying, etc.). By avoiding these multi-threaded issues, we can develop a reliable software product free of any unexpected and perhaps difficult to reproduce errant behaviors.
Hard real time applications should be designed such that priority inversion does not happen in the first place. For platforms where lock free implementations are not possible, we use priority inheritance mutexes to minimize the effects of priority inversions. This mechanism is designed to ensure the higher priority task is kept in the blocked state for the shortest time possible, and in so doing minimize the 'priority inversion' that has already occurred.
Software Development Management and Testing
We believe strongly in software configuration management and diligently use tools such as GIT, Subversion, and Mercurial. We track software bugs using open source bug tracking databases such as Bugzilla and Mantas. We perform testing at the Unit, Integration, Functional, System, Stress, Performance, Usability, and Acceptance Test levels.
Software Development Documentation
In addition to program management documentation, we have created and maintained the full suite of software development documentation which includes:
- Software Requirements Document.
- Software Development Plan.
- Software Design Document.
- Software Test Plan.
- Version Description Document.
- User’s Manual.
- System Architecture documentation.
- API level documentation.
- Doxygen documentation from annotated C++ sources.
Our engineers have experience planning and leading the development of software and firmware based projects. This discipline involves the full software development life cycle (SDLC) from proposal, to implementation, project monitoring and control, to final testing and deployment. Software methodologies that we support include the traditional Waterfall, and Agile methods.
Our project/program manager is responsible for:
- Planning and designing the program and proactively monitoring its progress, resolving issues, and initiating appropriate corrective action.
- Facilitating the appointment of individuals to project teams.
- Infrastructure planning, interfaces, technical, and specialist standards.
- Managing the program's budget.
- Ensuring the delivery of products or services from projects is to the appropriate level of quality, on time and within budget in accordance with the program plan.
- Ensuring there is allocation of common resources and skills within the program's individual projects.
- Managing third party contributions to the program.
- Managing communications with all stakeholders.
- Managing both the dependencies and the interfaces between projects.
- Managing risks to the program's successful outcome.
- Ensuring effective quality assurance.
- Initiating extra activities and other management interventions wherever gaps in the program are identified or issues arise.
- Reporting the progress of the program at regular intervals.
Open Source Technologies
We created this web site using the popular open source WordPress web content management system (CMS). Who doesn't love WordPress? It is a giant leap in technology from our days of developing web content with Adobe Dreamweaver. WordPress is just one of many open source tools that we use in our company and in our products and we are strong supporters of the open source community.
Our open source technology practice revolves around leveraging our open source expertise for the benefit of our customers in their product development initiatives. Our team has extensive experience working on Linux, Apache, C, C++, Qt, MySQL, Django, Python, Bootstrap, HTML, and Ajax and other development languages and technologies. The strong developer communities and open licensing model, which reduces the Total Cost of Ownership (TCO) of products, are some of the advantages gained by using open-source for development initiatives.
We strive to reap the benefits of open source technologies to our customers by:
- Reusing and customizing various open source frameworks and deriving exceptional cost advantages as a result.
- Realizing stable and high quality products faster.
- Extending open source to add in custom functionality. You can modify and adapt open source software for your own business requirements, something that is not possible with proprietary systems.
- It is generally cost free, reducing TCO for end-users. These days for virtually every paid for proprietary software system you will find an open source version.
- It’s continually evolving in real time as developers add to it and modify it, which means it can be better quality and more secure and less prone to bugs than proprietary systems, because it has so many users poring over it and weeding out problems.
Our experience in developing and customizing products using open source technology help us in providing our customers the right solutions for their engineering requirements.