Davide Faconti
Verified Expert in Engineering
Software Developer
For over the past 15 years Davide has inhabited many roles such as a software developer, system engineer, and roboticist. In his development work, he always strives for clean, maintainable, and readable code via best practices and he also possesses a strong background in multi-threading, optimization, modern C++ development, and real-time software.
Portfolio
Experience
Availability
Preferred Environment
Linux
The most amazing...
...thing I’ve done was to develop real-time control software for embedded systems and robotics.
Work Experience
Robotic Architect
Blue Ocean Robotics
- Worked as a robotic architect and as one of the most senior engineers in the entire company—reporting directly to upper management, supervising the execution of multiple projects, and prioritizing tasks.
- Defined the best practices and methodologies, for instance, test-driven development and model-driven software design; also proposed system-level software architectures.
- Created the software architecture and software modules to navigate autonomously in a mixed indoor-outdoor scenario.
- Improved, sometime dramatically, the CPU usage of some software module widely used in the company.
- Introduced alternative algorithms to perform few perception and navigation tasks more effectively.
- Selected the hardware components (computers, motors, servo drives, sensors) to be used on a novel product, keeping in mind both performance and serial production constraints.
- Defined a logging infrastructure to record business-critical information and metrics in the Ccoud from our robot fleet.
- Supervised an internal project focused on benchmarking of Visual-SLAM algorithms.
Senior Robotic Software Engineer
Eurecat
- Developed software for a mobile manipulator; paid particular attention to modules that perform motion control, image processing, the task orchestration (state machine), and graphic user interfaces.
- Introduced and promoted Agile project management to the team.
- Continuously mentored junior developers and taught them advanced C++ programming techniques and best practices in software development.
- Worked in an environment with model-driven development and a high level of coordination and orchestration of robot behaviors.
Consultant | Project Manager
Freelance Work
- Supervised, as an external consultant, the design of an advanced biped humanoid robot at Pal Robotics which included the following tasks.
- Defined the technical requirements and the overall hardware architecture.
- Coordinated the activities with all of the R&D departments of the company (software, electronics, and mechanics).
- Managed and coached the team of mechanical engineers.
- Defined and implemented the software tools which enabled simple-and-fast testing of the hardware.
Senior Robotics Software Engineer
Institute of Human Machine Cognition
- Implemented a whole body robotic controller, also known as the Hierarchical Inverse Kinematics or “Stack of Tasks” which significantly improved the ability of the humanoid robots “Atlas” to perform complex tasks which were not feasible using the previous software framework used at IHMC.
Freelance Developer | Consultant
Icarus Technology
- Provided software and firmware development to several clients, particularly in the field of control and automation and embedded systems.
- Designed a customized, low-cost robotics manipulator for an academic client (University of Bergamo).
- Implemented an easy-to-use interface to the industrial communication protocol known as “CANopen”. The software, that is commercially available, is described in more detail at Canmoveit.com.
Software Engineer
NTB (Technical University of Buchs)
- Developed a software stack to control a high precision robot that worked extremely fast, with strict real-time requirements.
- Constructed the software framework and developed it on QNX.
- Wrote different control algorithms for the above project.
- Built a distributed communication infrastructure for the above project that solved the challenge of coordinating heterogeneous software components running simultaneously on multiple machines.
Researcher
Technical University of Leuven
- Researched, defined, and documented several best practices in the development of reusable software component in large robotic systems.
- Solved the main challenge of figuring out how to apply model-driven engineering to a distributed system and identify the shortcomings in existing robotic frameworks; this included also the description of a more effective development process.
- Worked on the above project which was part of the EU-funded project “BRICS: Best Practices in Robotics” (Best-of-robotics.org).
Experience
PlotJuggler
https://github.com/facontidavide/PlotJugglerGroot
https://github.com/Eurecat/GrootBehaviorTree.CPP
https://github.com/BehaviorTree/BehaviorTree.CPPEven if our main use case is robotics, you can use this library to build AI for games or to replace finite state machines in your application.
There are a few features that make BehaviorTree.CPP unique, when compared to other implementations:
• It makes asynchronous actions, i.e., non-blocking, a first-class citizen.
• You can build reactive behaviors that execute multiple Actions concurrently.
• Trees are defined using a domain-specific scripting language (based on XML) and can be loaded at run time; in other words, even if written in C++, the trees are not hard-coded.
• You can statically link your custom tree nodes or convert them into plugins, which can be loaded at run-time.
• It provides a type-safe and flexible mechanism to do Dataflow between Nodes of the tree.
• It includes a logging/profiling infrastructure that allows the user to visualize, record, replay, and analyze state transitions.
• Last but not least: it is well documented!
CPP Optimizations Diary
https://cpp-optimizations.netlify.app/The articles are shared under a creative common license and are periodically updated. Many examples are based on my contributions to popular open-source projects on GitHub.
Education
Bachelor's Degree in Electronics
Politecnico di Torino - Torino, Italy
Master's Degree in Complex Adaptive Systems (Neural Networks, Robotics, Simulations)
Chalmers University of Technology - Chalmers, Sweden
Skills
Languages
C++, Java, Python, C++14
Frameworks
Qt 5, Boost, Qt
Paradigms
Parallel Programming, Agile Workflow, Real-time Systems, Agile
Other
Multithreading, Algorithms, Robotics, Robot Operating System (ROS), Computer Vision, Concurrent Computing, QNX, Autonomous Navigation, Optimization
Platforms
Linux
Tools
SOLIDWORKS
Industry Expertise
Project Management
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring