Rant: What is Self-Driving Vehicles and my views

We all like learning about new technology and we hear multiple companies working on Self-Driving vehicles. What we never hear about is how it actually works and the process of using it. In this post, we will explain a little about the technology that is being used and how the car interacts with other users or objects on the road. If you haven’t already seen a site called Moral Machine developed by MIT, then I do suggest you check it out. I believe its methods are really drastic because it most of the 13 scenarios that are presented you have to take a life. The whole reason for Sel-Driving vehicles is to prevent accidents and make driving safe for everyone. If you think my judgment is wrong, please let me know in the comments.

How does a Self-Driving vehicle work?
The vehicle will need some of the very old technology that has, of course, increased in development. Let’s go over what is needed for a Self-Driving vehicle to function correctly.

CPU (Central Processing Unit) is on the top of our list because this is the closest humans can get to a functioning brain.

Proximity Sensors have been around since 1970.
The proximity sensor (a transmitter and sensor pair) work acoustically. A pair is fitted on the backside of the car. The transmitter generates a high-frequency sound signal and the sensor measures the time difference of the signal bounced back from the wall. The time difference reduces as the car approaches the wall, telling the driver when to stop. This sounds a lot like sonar/radio waves, but we will get into that very soon.

Road Maps have been around since 1160 BC, but didn’t start getting used in vehicles until 1981 (Honda Accord/Vigor). The maps we used to use today come from two Danish brothers Lars and Jens Eilstrup Rasmussen back in 2003, and later was acquired by Google and became Google Maps.
Maps tell you the directions to the destination of your choosing. We will go over the pitfalls of this later in the post.

GPS (Global Positioning System) Navigation is also required, but this technology was first introduced in 1993 (Mazda Cosmo).
GPS is made up of satellites, ground stations, and receivers. The receiver sends a signal to the satellite or ground station depending on the weather and where in the world you are. The receiver will then send out multiple signals to triangle your position. Once you’re the location has been identified, it will simultaneously bring that location on the map.

Sonar Grid or radar was developed by James Clerk Maxwell and Heinrich Hertz back in 1888.
Sonar works with the CPU, multiple proximity sensors, and the camera. Using the functions that have already been explained about it gathers all of this information and guides the vehicle around the objects or to the object.

Front, Reverse, and Side Camera technology was introduced by Toyota (1991 Toyota Soarer Sports Coupe) in 1991 and has since been developed.
This works like your normal camera on any device that you decide to use, but for a safety feature, it has also made items appear closer than they appear, just like your side mirrors. With the other functions listed above to add a better experience.

SAE automated vehicle classifications:
Level 0: Automated system issues warnings but has no vehicle control.
Level 1 (”hands-on”): Driver and automated system share control over the vehicle. An example would be Adaptive Cruise Control (ACC) where the driver controls steering and the automated system controls speed. Using Parking Assistance, steering is automated while speed is manual. The driver must be ready to retake full control at any time. Lane Keeping Assistance (LKA) Type II is a further example of level 1 self-driving.
Level 2 (”hands-off”): The automated system takes full control of the vehicle (accelerating, braking, and steering). The driver must monitor the driving and be prepared to immediately intervene at any time if the automated system fails to respond properly. The shorthand ”hands off” is not meant to be taken literally. In fact, contact between hand and wheel is often mandatory during SAE 2 driving, to confirm that the driver is ready to intervene.
Level 3 (”eyes off”): The driver can safely turn their attention away from the driving tasks, e.g. the driver can text or watch a movie. The vehicle will handle situations that call for an immediate response, like emergency braking. The driver must still be prepared to intervene within some limited time, specified by the manufacturer when called upon by the vehicle to do so.
Level 4 (”mind off”): As level 3, but no driver attention is ever required for safety, i.e. the driver may safely go to sleep or leave the driver’s seat. Self-driving is supported only in limited areas (geofenced) or under special circumstances, like traffic jams. Outside of these areas or circumstances, the vehicle must be able to safely abort the trip, i.e. park the car, if the driver does not retake control.
Level 5 (”wheel optional”): No human intervention is required. An example would be a robotic taxi.

Who can drive a Self-Driving vehicle?
It is not as simple as turning the key or using voice activation to tell the car to drive to your destination. To get behind the wheel of a Self-Driving vehicle you first need to be evaluated on your current driving habits. This includes how well you can do that Self-Driving vehicles job without making mistakes. If you pass the test, you will still have to go to a Self-Driving 40-hour class that will teach you how to operate the semi-automated car. The reason I say semi-automated is because the car can’t function without the use of human interaction. It will follow a set path and if the multiple sensors can read the road. It will be automated, but considering the roads are not all at the same standard, and obstacles in the way come and go.

Maybe you already had a good understanding of Self-Driving Vehicles, but the information above should help you with understanding it more.

Advertisements

What is Zammel (XAML) and how can it help me make PowerShell GUI’s

Making a professional PowerShell GUI has just been attainable by using XAML. XAML (pronounced ZAMMEL) otherwise known as Extensible Application Markup Language. Is an XML-based language developed by Mircosoft which has the looks of HTML, but is made to build GUI based applications. XAML is used to define a user interface, but it creates instances of classes to set values. Creating XAML code can be done in two ways. Writing code by hand or visually by working inside Visual Studio. XAML is part of the WPF (Microsoft Windows Presentation Foundation).

Creating a XAML GUI requires you to understand the basics of drag and dropping by using Visual Studio. Maybe you already own Visual Studio, but the great people over at Microsoft have also provided us with a community version; Visual Studio Express. Visual Studio will help us manipulate the WPF which interns create the XAML code we need. Once you have acquired the product

You will want to start off by creating a new project.

VisualStudio1

 

Once the New Project Window appears to make sure to select WPF Application. It would also be a good time to name your project and the location you would like to store it.

 

 

Once inside the Project you will notice a screen like this. If you are used to coding in Visual Studio everything will be as usual. You will notice at the bottom in the Design Toolbox is the XAML code that will be needed for the PowerShell GUI.

 

To create a document of your choice. You simply locate the ToolBox and start dragging elements into the working WPF Application area.

 

I created this PowerShell code called Get-CPUProcess that will demonstrate the Task Manager. Wouldn’t it look cool if it was a GUI and not a TUI. With the power of XAML and WPF this was possible.

 

To make this process simple I have added the code need to create the XAML and WPF.

<Window x:Class="Get-CPUProcess"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="Get-CPUProcess" Height="299" Width="626" Foreground="#FFDECDCD">
    <Window.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Black" Offset="0"/>
            <GradientStop Color="#FF27358F" Offset="1"/>
        </LinearGradientBrush>
    </Window.Background>
    <Window.OpacityMask>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Black" Offset="0"/>
            <GradientStop Color="#FF970F0F" Offset="1"/>
        </LinearGradientBrush>
    </Window.OpacityMask>
    <Grid>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Height="30" Margin="241,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="140" FontSize="16"><Run Text="My "/><Run Language="nb-no" Text="First XAML GUI"/></TextBlock>
        <Button x:Name="GetProcess" Content="Get-Process" HorizontalAlignment="Left" Margin="274,52,0,0" VerticalAlignment="Top" Width="75" Foreground="White">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="Black" Offset="0"/>
                    <GradientStop Color="#FFD35A4D" Offset="1"/>
                </LinearGradientBrush>
            </Button.Background>
        </Button>
        <ListView x:Name="listView" HorizontalAlignment="Left" Height="156" Margin="5,87,0,0" VerticalAlignment="Top" Width="608" FontSize="16">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" DisplayMemberBinding ="{Binding 'Name'}" Width="120"/>
                    <GridViewColumn Header="PID" DisplayMemberBinding ="{Binding 'PID'}" Width="120"/>
                    <GridViewColumn Header="CPU %" DisplayMemberBinding ="{Binding 'CPU'}" Width="120"/>
                    <GridViewColumn Header="Memory (MB)" DisplayMemberBinding ="{Binding 'Memory'}" Width="120"/>
                    <GridViewColumn Header="Disk (MB)" DisplayMemberBinding ="{Binding 'Disk'}" Width="120"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>