Import 'autonomous parking' activity (#357)
This commit is contained in:
parent
d5b55585cd
commit
3006af3e63
@ -7,7 +7,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Autonomous Parking",
|
"name": "Autonomous Parking",
|
||||||
"description": "TBD",
|
"description": "Design cars that can park by themselves",
|
||||||
"url":"/coding/autonomous-parking",
|
"url":"/coding/autonomous-parking",
|
||||||
"imageUrl": "/static/lessons/autonomous-parking.png",
|
"imageUrl": "/static/lessons/autonomous-parking.png",
|
||||||
"cardType": "side"
|
"cardType": "side"
|
||||||
|
172
docs/coding/autonomous-parking.md
Normal file
172
docs/coding/autonomous-parking.md
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
# Autonomous Parking
|
||||||
|
|
||||||
|
Design cars that can park themselves safely without driver intervention.
|
||||||
|
|
||||||
|
![Autonomous parking graphic](/static/coding/autonomous-parking/auto-parking-connect.jpg)
|
||||||
|
|
||||||
|
## Connect
|
||||||
|
|
||||||
|
**Think about:**
|
||||||
|
|
||||||
|
* How do autonomous cars work?
|
||||||
|
* What would it take to ensure that autonomous cars are safe?
|
||||||
|
* What types of movements do autonomous cars need to perform?
|
||||||
|
|
||||||
|
## Construct
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
Build a LEGO MINDSTORMS vehicle that can park itself safely without driver intervention.
|
||||||
|
Start by constructing this [model](https://le-www-live-s.legocdn.com/sc/media/lessons/mindstorms-ev3/building-instructions/ev3-rem-driving-base-79bebfc16bd491186ea9c9069842155e.pdf).
|
||||||
|
|
||||||
|
![EV3- Robot Driving Base](/static/coding/autonomous-parking/ev3-robot-driving-base.jpg)
|
||||||
|
|
||||||
|
### Checks
|
||||||
|
|
||||||
|
Before you program, check:
|
||||||
|
|
||||||
|
* Are all the wires correctly connected from the motors to ports B and C?
|
||||||
|
* Are the wheels correctly installed?
|
||||||
|
* Are the wheels rotating freely?
|
||||||
|
|
||||||
|
### Program
|
||||||
|
|
||||||
|
Write a program that will make the robot turn three times in various ways.
|
||||||
|
|
||||||
|
**Think about:**
|
||||||
|
|
||||||
|
* How will you make the robot turn in different ways?
|
||||||
|
* How can the robot make a three point turn?
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
|
||||||
|
Consider using these blocks in your solution:
|
||||||
|
|
||||||
|
```block
|
||||||
|
motors.largeBC.tank(50, 50)
|
||||||
|
pause(500)
|
||||||
|
```
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
### Sample Solution - Three Point Turn
|
||||||
|
|
||||||
|
1. When the brick button is pressed, turn the driving base right and stop after 1.5 seconds.
|
||||||
|
2. Turn the driving base left and stop after 1 second.
|
||||||
|
3. Move the driving base forward for 3 seconds.
|
||||||
|
|
||||||
|
```blocks
|
||||||
|
brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () {
|
||||||
|
motors.largeBC.tank(75, 30)
|
||||||
|
loops.pause(1500)
|
||||||
|
motors.largeBC.tank(-30, -75)
|
||||||
|
loops.pause(1000)
|
||||||
|
motors.largeBC.tank(50, 50)
|
||||||
|
loops.pause(3000)
|
||||||
|
})
|
||||||
|
```
|
||||||
|
### Download and test
|
||||||
|
|
||||||
|
Click Download and follow the instructions to get your code onto your EV3 Brick. Press the center button on the EV3 Brick to run the program.
|
||||||
|
|
||||||
|
## Contemplate
|
||||||
|
|
||||||
|
Choose one of the following autonomous driving scenarios and create a program for it:
|
||||||
|
|
||||||
|
* Parallel parking
|
||||||
|
* Angle parking
|
||||||
|
* Perpendicular parking
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
|
||||||
|
Document pseudocode for your program before choosing programming blocks.
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
### Sample Solution - Parallel Parking
|
||||||
|
|
||||||
|
1. When the brick button is pressed, drive forward in a straight line for 3 rotations.
|
||||||
|
2. Wait for 1 second.
|
||||||
|
3. Reverse motor rotation while turning for 1.5 rotations.
|
||||||
|
4. Reverse motor rotation while turning the other way for 1.5 rotations.
|
||||||
|
5. Drive backward in a straight line for 0.5 rotations.
|
||||||
|
6. Drive forward in a straight line for 0.5 rotations.
|
||||||
|
|
||||||
|
```blocks
|
||||||
|
brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () {
|
||||||
|
motors.largeBC.steer(0, 50, 3, MoveUnit.Rotations)
|
||||||
|
pause(1000)
|
||||||
|
motors.largeBC.steer(-50, -50, 1.5, MoveUnit.Rotations)
|
||||||
|
motors.largeBC.steer(50, -50, 1.5, MoveUnit.Rotations)
|
||||||
|
motors.largeBC.steer(0, -50, 0.5, MoveUnit.Rotations)
|
||||||
|
motors.largeBC.steer(0, 50, 0.5, MoveUnit.Rotations)
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### Download and test
|
||||||
|
|
||||||
|
Click Download and follow the instructions to get your code onto your EV3 Brick. Press the center button on the EV3 Brick to run the program.
|
||||||
|
|
||||||
|
### Differentiation
|
||||||
|
|
||||||
|
Create a program that simulates displaying appropriate warning lights while parking.
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
|
||||||
|
Consider using this block in your solution:
|
||||||
|
|
||||||
|
```block
|
||||||
|
brick.setStatusLight(StatusLight.OrangeFlash)
|
||||||
|
```
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
### Sample Solution - Simulating Reverse Gear and Reverse Warning Lights
|
||||||
|
|
||||||
|
1. When the brick button is pressed, drive forward in a straight line for 3 rotations.
|
||||||
|
2. Wait for 1 second.
|
||||||
|
3. Set brick status light to orange flash.
|
||||||
|
4. Reverse motor rotation while turning for 1.5 rotations.
|
||||||
|
5. Reverse motor rotation while turning the other way for 1.5 rotations.
|
||||||
|
6. Drive backward in a straight line for 0.5 rotations.
|
||||||
|
7. Set brick status light to off.
|
||||||
|
8. Drive forward in a straight line for 0.5 rotations.
|
||||||
|
|
||||||
|
```blocks
|
||||||
|
brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () {
|
||||||
|
motors.largeBC.steer(0, 50, 3, MoveUnit.Rotations)
|
||||||
|
pause(1000)
|
||||||
|
brick.setStatusLight(StatusLight.OrangeFlash)
|
||||||
|
motors.largeBC.steer(-50, -50, 1.5, MoveUnit.Rotations)
|
||||||
|
motors.largeBC.steer(50, -50, 1.5, MoveUnit.Rotations)
|
||||||
|
motors.largeBC.steer(0, -50, 0.5, MoveUnit.Rotations)
|
||||||
|
brick.setStatusLight(StatusLight.Off)
|
||||||
|
motors.largeBC.steer(0, 50, 0.5, MoveUnit.Rotations)
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### Download and test
|
||||||
|
|
||||||
|
Click Download and follow the instructions to get your code onto your EV3 Brick. Press the center button on the EV3 Brick to run the program.
|
||||||
|
|
||||||
|
### Share
|
||||||
|
|
||||||
|
**Think about:**
|
||||||
|
|
||||||
|
* What challenged you?
|
||||||
|
* Were there any surprises?
|
||||||
|
* How can you improve your program?
|
||||||
|
* Can your program be more streamlined? Have you used too many blocks?
|
||||||
|
* Is there a more efficient way to build your program?
|
||||||
|
* How can your program be used in real-world scenarios?
|
||||||
|
|
||||||
|
|
||||||
|
## Continue
|
||||||
|
|
||||||
|
* Click on the JavaScript tab and experiment with changing the values in the code.
|
||||||
|
* Add a custom image or sounds from the Brick or Music menus.
|
||||||
|
* Create a video of your project, especially your final presentation and your robot’s performance. Explain some important features of your software program.
|
||||||
|
* Include an image of your program with comments.
|
||||||
|
* Add a team photograph!
|
||||||
|
|
||||||
|
Congratulations! What will you design next?
|
BIN
docs/static/coding/autonomous-parking/auto-parking-connect.jpg
vendored
Normal file
BIN
docs/static/coding/autonomous-parking/auto-parking-connect.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
BIN
docs/static/coding/autonomous-parking/ev3-robot-driving-base.jpg
vendored
Normal file
BIN
docs/static/coding/autonomous-parking/ev3-robot-driving-base.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
Loading…
Reference in New Issue
Block a user