Top Banner
Hardware & Sofware: design and Hardware & Sofware: design and implementaton implementaton Andrea Ranieri Andrea Ranieri
31

Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

Aug 04, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

Hardware & Sofware: design and Hardware & Sofware: design and implementatonimplementaton

Andrea RanieriAndrea Ranieri

Page 2: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardwarePart 1Part 1

Page 3: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● What's the purpose of designing and developing new hardware components for UMVs?

● Each component basically has to solve one (well, sometimes more than one) specific problems:

● engines and controllers provide propulsion● sensors provide data● computing boards provide processing capacity to coordinate everything

Page 4: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● Design of new non-trivial components is essential● It allows to carefully plan and somehow “simulate” the purchase/development process:

1. formalize the requirements2. do a make-or-buy decision3. design an “alpha-prototype” on paper4. see if everything fits mechanically and electrically into the UMV (and maybe into the other UMVs)

● simulate unit tests and integration tests5. goto step 1 and refine until error < ε

Page 5: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● Use case:

● build a high performance Computer Vision system to be mounted on a UMV.

● Step 1: requirements● what does it mean “high performance”?● in the context of UMVs, where hardware is usually close to industrial-grade specifications, “high performance” may be everything >= to a decent desktop computer

● able to do advanced processing on HD stereo images at high FPS.

Page 6: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 1.01: rule out impossible requirements● no LIDAR underwater

● underwater LIDAR systems exist but are way too expensive

● no Kinect (no IR underwater)

Page 7: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

Page 8: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● Step 2: make or buy? It largely depends on the underlying technology.

● BuyBuy:● the process is “fast & easy” if the technology is reliable enough

● usually costs less money than R&D + parts● sometimes the software is already available, working and tested

● if the component is backed by a big open-source community -> 90% of work is already done

Page 9: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 2: make or buy? It largely depends on the underlying technology.

● MakeMake:● the process is slow and usually expensive (both in parts and in effort)

● if the technology is bleeding-edge, “disruptive” or niche market, it may yield substantial savings or even a profit

● both hardware and software will be “taylor-made” for the application.

Page 10: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 2: make or buy the stereo camera?● definitely buybuy (and go mainstream)

● Bumblebee XB3 is relatively inexpensive● lot of software and functionalities already available

● a large community of users● tech specs may be better● firewire is a pain in the ass

Page 11: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 2: make or buy the high performance mini-pc?

● Raspberry Pi 3, ODROID-C2/XU3 are not enough

● Intel NUC CPUs are fine but NUCs can't be upgraded and their GPUs are not so fast

● Best long-term solution: makemake a high performance mini-pc

Page 12: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 3: “alpha-prototype” on paper

Firewire underwater cable

Powerful i7 mini-pc, with room for additional GPU

Bumblebee XB3 (very compact)

Page 13: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Step 3: “alpha-prototype” on paper● Mini-pc i7 specs:

1. Intel Core I7-6700K2. ASRock Z170 Gaming-ITX/ac3. 2x8GB DDR4 3733MHz LPX4. Samsung 256GB SSD SM951 M.25. StarTech Mini PCI-Express to FireWire adapter

6. [Leave room for an additional GPU]

Page 14: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● Step 3: “alpha-prototype” on paper

● Mini-pc i7

Page 15: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● Step 4: see if everything fits mechanically and electrically (and thermically?)

● the PCI-Ex 16x slot is completely on the edge of the board -> the cylinder will be considerably bigger than the motherboard form factor

● or it won't be a cylinder at all?● or we could try another PCI-Ex extender

● when the cylinder is sealed, the system will probably produce enough heat to become unstable in air

● circuit partitioning and power on via SW

Page 16: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● What's next?

Page 17: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware● GPS● Laser scanners

● dense 3D point cloud “colored” as seen by the laser: intensity of echoed infrared laser beams

● Radar● small radar arrays mounted around the side of the vehicle

● Odometry● wheel encoders

● Inertial data● accelerometers● gyroscopes

● Acoustic data● proximity

● Visual data● cameras

Page 18: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Obviously, we can't compete with Google, if only for the budget

● But we can try to copy● Google cars has about 150k€ in equipment and uses 70k€ Velodyne HDL-64E as LIDAR system

● On the sea surface and in air, we could use Velodyne VLP-16 ~= 10k€ overall

Page 19: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

Google LIDAR Navigaton System

Page 20: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Questions?Questions?

Page 21: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

HardwareHardware

● Questions?Questions?

Page 22: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofwarePart 2Part 2

Page 23: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● What are the differences with hardware?

1. Software is intangible● It's hard to understand its development effort

2. Software is easy to reproduce● Cost is only in its development● In other engineering products, costs are in manufacturing

3. Software is labor-intensive● Hard to automate● Only prototyping and testing can be successfully automated

Page 24: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● What are the differences with hardware?

4. Software requires highly specialized workforce● Untrained people can hack something together● Quality and performance bugs are hard to catch

5. Software is easy to modify● Developers often make changes without full and detailed

knowledge of the code● PROs: abstraction and encapsulation (information hiding)● CONs: unexpected behaviors

6. Software does not “wear out”● It deteriorates mainly by having its design changed:

● erroneously● in ways that were not anticipated

Page 25: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Much software has poor design and it will get worse if not rewritten from scratch

● Demand for software is always high and rising

● We are in a perpetual “software crisis”● We still have to fully learn to “engineer” software

● We still have to fully learn how to package and distribute software

● Linux software packages and ROS packages are good examples, but there is margin for improvement

Page 26: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Today software has become way too complex to fit entirely in one head

● or to be written by one or a few people● At the end, the process of engineering software is just a matter of:

● recycling other's work● “trusting” libraries and frameworks you're using

● (optional, but highly recommended) - repackage and make open-source for others to improve your work

Page 27: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Focusing on C++, there are only a few major portable SW components

● Standard Template Library (STL): part of the C++ ISO Standard itself, almost bugfree

● Boost Libraries: free peer-reviewed portable C++ libraries, very few bugs. Cyclically, Boost features are ported into STL (smart pointers, threads, lambdas, etc.)

● Qt: cross-platform framework (UI, networking, DB, etc.), the graphical part is in continuous development (= a little bit buggy)

● OpenCV: imaging and computer vision● Crypto++: cryptography and security● ROS: middleware framework for communication,

visualization, packaging and many other tools/libraries for C++/Python development

Page 28: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● For anything else not covered by these libraries, one has to:

● search for smaller, less actively developed/maintained libraries

● write the code himself

Page 29: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Enter ROS!● ROS opens the way to a huge amount of very well written (and tested) software packages

● The shortest term advantage is on sensors

● GPS, camera, LIDAR, multibeam, IMU, Kinect, Leap Motion, etc. etc. etc.

● The long term advantage is to have a distro-like packaging and distribution system that speeds up the software production

Page 30: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Let's see a few examples:

● Example 1 - Mono odometer - used with an old analog camera acquired @ 720x576 - compared with Teledyne DVL (Doppler Velocity Log).

● OpenCV with SURF feature detection and extraction

● PROs: detection and extraction is ready to use, easily portable on GPU

● CONs: rotation-invariant - (need to move to ORB?)

Page 31: Hardware & Sofware: design and implementaton · 2016-09-27 · Sofware What are the differences with hardware? 4. Software requires highly specialized workforce Untrained people can

SofwareSofware

● Let's see a few examples:

● Example 2 - ROS Leap Motion driver + OGRE-based libHand

● ROS Leap Motion driver is ready to use● Needed to repackage and made libHand compile● Leap Motion data is very noisy -> kalman filter● No physics of the hand or constraints on the joints