Autoware.Auto
|
|
The Autonomous Valet Parking (AVP) demonstration uses Autoware.Auto to provide a valet parking service. It was realized in 2020 by Autoware members, described in more detail in this blog post.
The goal is to direct the car to autonomously park in a parking lot and to return autonomously to a pick-up/drop-off area simply by using a smartphone.
The AVP demonstration uses Autoware.Auto to provide the following functions:
The easiest way to repeat the demonstration is to run it in Simulation. Given appropriate hardware, it can of course be repeated in real life as well as detailed in Physical demonstration.
To run this demo, the following inputs are needed:
If LGSVL simulator is set up as explained, these two components should be available out of the box in simulation under /opt/AutowareAuto/share/autoware_auto_avp_demo/data
.
To run the LGSVL simulator, an NVIDIA graphics card is required. Additional information about requirements can be found here.
These instructions were tested successfully on a number of machines, these are the specs of one such machine:
Running and controlling the simulation requires two separate terminals.
Open a new terminal 2, either in the same ADE instance or in a new ADE instance on an second machine, run the launch file for Milestone 3 as follows to use the pre-compiled packages from /opt/AutowareAuto
:
Alternatively, if the source code has been modified locally, first build, then launch:
To interrupt the launched processes, hit Ctrl c
. Turning the simulation off while building can save compute resources to accelerate the build.
When following the steps above, the RViz window should show what the Autoware.Auto stack sees. The system is initially not localized, and the car is tentatively placed at the origin of the map frame. Terminal 2 displays output related to starting the stack similar to:
There should be no error messages; else check Troubleshooting.
By default, RViz is in the Move Camera
mode, in which the mouse can control the view like this:
Change properties of how and if entities are shown in RViz from the panel on the left of the window. Hide that panel by clicking on the little triangle pointing to the left. When that panel is hidden, the output in RViz should look like this where the car is shown as a white outline:
In the LGSVL simulation, the vehicle is spawned at a particular location of the map that is different from the origin. The NDT localizer used in the Autoware.Auto stack currently requires an initial guess of the vehicle pose that is somewhere close to the truth. After that initial guess, NDT should follow along when the car moves.
Detailed instructions are given at Initializing the NDT localizer.
Once the initialization of NDT is completed, navigate back to the LGSVL window and press the play button in the bottom left corner of the window.
Now that NDT is initialized, run the simulation if it is not already running.
In order to reproduce the demo as in real life, manually drive the vehicle from the spawning point to the drop-off zone as shown on the image below. It may be worthwhile to spend a minute or two to drive a few laps around the map to see what is where.
Use the up and down arrow keys to accelerate or brake, respectively. The right and left arrow keys are used for steering the vehicle. Upon initialization the vehicle should be place in Drive mode. To change this to Reverse, use the PageDown key. The PageUp key can be used to put the vehicle back into Drive. For more information about the control in LGSVL, press the controller button in the bottom left corner.
In the image below, orange boxes indicate lidar objects, red points indicate lidar points that are generated as artificial input from simulation, and white dots indicate the point-cloud map used by the localization system as a reference. All of these visualization can be toggled in RViz.
Having the car in the LGSVL simulation aligned with the position in RViz as in the image below means the system is properly localized and ready for the next step.
In principle, the vehicle can park in any of the parking spots indicated in the map. In the physical demo, the reference parking spot was the 5th spot on the right counting from the end of the lane of the drop-off zone.
From the drop-off zone, select a parking spot by clicking the 2D Goal Pose
button in RViz, and click and select in the map to select a parking spot and the orientation of the car, implicitly selecting among head-in and reverse parking.
The stack then starts to plan the trajectory and visualizes poses along the way. The planning task is separated into two steps, the lane following and the parking itself. In the parking phase, virtual obstacles are added to guide the vehicle into the right position.
Once parked, the vehicle can be directed to exit the parking spot and to return to the drop-off zone following the above procedure to send a new goal pose to the planner. The poses mentioned are just examples, the vehicle can alternatively be instructed to go to another pose on an arbitrary lane in the map, or one can try parking in other parking spots.
As an alternative to selecting goal poses with a mouse in RViz, one can use a web interface that is launched with the rest of the stack.
Open http://127.0.0.1:8000/
on the host system in a web browser to send goal poses to the vehicle. This requires that
If the above conditions are satisfied, click e.g. the Reverse park
button in the web browser. In essence, this publishes a goal pose that the stack plans for. Monitor the pose coordinates with
The computational demands of running the LGSVL simulator and the Autoware.Auto stack for the AVP demo in parallel are high and may not be met by commonly available laptops with a consumer-grade NVidia accelerator.
There are various manifestations pointing to this of lack resources:
Solution: Either run the simulation and the Autoware.Auto stack on separate machines (recommended), or run both on a more powerful computer with a better GPU.
When running Autoware on two separate machines, make sure the two machines are in the same subnet and UDP multicast is not blocked by firewall or router.
After starting the simulation and the stack, the console is full of errors like this:
Solution: Initializing the localization
If the global planner cannot reach a goal pose, it outputs the following message:
Solution: This can happen is the position is too close to the vehicle as the global planner does not consider reversing and doesn't find a path within on lanelet in the map. Try a pose that is further away.
The physical AVP demonstration was performed at a car park in San Jose, CA, USA, in 2020 with a Lexus RX 450h equipped with
For videos of the Lexus performing the demonstration autonomously, please check Impressions from the Autonomous Valet Parking Demonstration.
Using the hardware that is defined in the Physical Demo section above, the demonstration can be run on physical hardware only in parking lots for which a Lanelet2 map and lidar map are available.
To run the demonstration on a physical vehicle using your own maps:
.pcd
and .yaml
files for the PCD map in the src/tools/autoware_auto_avp_demo/param/map_publisher_vehicle.param.yaml
with paths to your own map files..osm
file for the Lanelet2 map in the src/tools/autoware_auto_avp_demo/param/lanelet2_map_provider.param.yaml
with the path to your own map file.Whether using your own maps or the existing ones:
The system architecture that was developed to address the AVP ODD in Autoware.Auto is given below: