You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.9 KiB
150 lines
4.9 KiB
# Replay
|
|
|
|
`replay` allows you to simulate a driving session by replaying all messages logged during the use of openpilot. This provides a way to analyze and visualize system behavior as if it were live.
|
|
|
|
## Setup
|
|
|
|
Before starting a replay, you need to authenticate with your comma account using `auth.py`. This will allow you to access your routes from the server.
|
|
|
|
```bash
|
|
# Authenticate to access routes from your comma account:
|
|
python3 tools/lib/auth.py
|
|
```
|
|
|
|
## Replay a Remote Route
|
|
You can replay a route from your comma account by specifying the route name.
|
|
|
|
```bash
|
|
# Start a replay with a specific route:
|
|
tools/replay/replay <route-name>
|
|
|
|
# Example:
|
|
tools/replay/replay 'a2a0ccea32023010|2023-07-27--13-01-19'
|
|
|
|
# Replay the default demo route:
|
|
tools/replay/replay --demo
|
|
```
|
|
|
|
## Replay a Local Route
|
|
To replay a route stored locally on your machine, specify the route name and provide the path to the directory where the route files are stored.
|
|
|
|
```bash
|
|
# Replay a local route
|
|
tools/replay/replay <route-name> --data_dir="/path_to/route"
|
|
|
|
# Example:
|
|
# If you have a local route stored at /path_to_routes with segments like:
|
|
# a2a0ccea32023010|2023-07-27--13-01-19--0
|
|
# a2a0ccea32023010|2023-07-27--13-01-19--1
|
|
# You can replay it like this:
|
|
tools/replay/replay "a2a0ccea32023010|2023-07-27--13-01-19" --data_dir="/path_to_routes"
|
|
```
|
|
|
|
## Send Messages via ZMQ
|
|
By default, replay sends messages via MSGQ. To switch to ZMQ, set the ZMQ environment variable.
|
|
|
|
```bash
|
|
# Start replay and send messages via ZMQ:
|
|
ZMQ=1 tools/replay/replay <route-name>
|
|
```
|
|
|
|
## Usage
|
|
For more information on available options and arguments, use the help command:
|
|
|
|
``` bash
|
|
$ tools/replay/replay -h
|
|
Usage: tools/replay/replay [options] route
|
|
Mock openpilot components by publishing logged messages.
|
|
|
|
Options:
|
|
-h, --help Displays this help.
|
|
-a, --allow <allow> whitelist of services to send (comma-separated)
|
|
-b, --block <block> blacklist of services to send (comma-separated)
|
|
-c, --cache <n> cache <n> segments in memory. default is 5
|
|
-s, --start <seconds> start from <seconds>
|
|
-x <speed> playback <speed>. between 0.2 - 3
|
|
--demo use a demo route instead of providing your own
|
|
--auto Auto load the route from the best available source (no video):
|
|
internal, openpilotci, comma_api, car_segments, testing_closet
|
|
--data_dir <data_dir> local directory with routes
|
|
--prefix <prefix> set OPENPILOT_PREFIX
|
|
--dcam load driver camera
|
|
--ecam load wide road camera
|
|
--no-loop stop at the end of the route
|
|
--no-cache turn off local cache
|
|
--qcam load qcamera
|
|
--no-hw-decoder disable HW video decoding
|
|
--no-vipc do not output video
|
|
--all do output all messages including uiDebug, userFlag.
|
|
this may causes issues when used along with UI
|
|
|
|
Arguments:
|
|
route the drive to replay. find your drives at
|
|
connect.comma.ai
|
|
```
|
|
|
|
## Visualize the Replay in the openpilot UI
|
|
To visualize the replay within the openpilot UI, run the following commands:
|
|
|
|
```bash
|
|
tools/replay/replay <route-name>
|
|
cd selfdrive/ui && ./ui
|
|
```
|
|
|
|
## Try Radar Point Visualization with Rerun
|
|
To visualize radar points, run rp_visualization.py while tools/replay/replay is active.
|
|
|
|
```bash
|
|
tools/replay/replay <route-name>
|
|
python3 replay/rp_visualization.py
|
|
```
|
|
|
|
## Work with plotjuggler
|
|
If you want to use replay with plotjuggler, you can stream messages by running:
|
|
|
|
```bash
|
|
tools/replay/replay <route-name>
|
|
tools/plotjuggler/juggle.py --stream
|
|
```
|
|
|
|
## watch3
|
|
|
|
watch all three cameras simultaneously from your comma three routes with watch3
|
|
|
|
simply replay a route using the `--dcam` and `--ecam` flags:
|
|
|
|
```bash
|
|
# start a replay
|
|
cd tools/replay && ./replay --demo --dcam --ecam
|
|
|
|
# then start watch3
|
|
cd selfdrive/ui && ./watch3
|
|
```
|
|
|
|

|
|
|
|
## Stream CAN messages to your device
|
|
|
|
Replay CAN messages as they were recorded using a [panda jungle](https://comma.ai/shop/products/panda-jungle). The jungle has 6x OBD-C ports for connecting all your comma devices. Check out the [jungle repo](https://github.com/commaai/panda_jungle) for more info.
|
|
|
|
In order to run your device as if it was in a car:
|
|
* connect a panda jungle to your PC
|
|
* connect a comma device or panda to the jungle via OBD-C
|
|
* run `can_replay.py`
|
|
|
|
``` bash
|
|
batman:replay$ ./can_replay.py -h
|
|
usage: can_replay.py [-h] [route_or_segment_name]
|
|
|
|
Replay CAN messages from a route to all connected pandas and jungles
|
|
in a loop.
|
|
|
|
positional arguments:
|
|
route_or_segment_name
|
|
The route or segment name to replay. If not
|
|
specified, a default public route will be
|
|
used. (default: None)
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
```
|
|
|