This module converts V2I communication between the Autoware of ROS2 interface and UDP which is outside of ROS2 interface.
This converter acts with a single external device on a vehicle.
It is necessary to prepare a user-defined broadcasting device, which connects to number of infrastructure devices.
- input
- from autoware.universe
/awapi/tmp/infrastructure_commands
[tier4_v2x_msgs/msg/InfrastructureCommandArray]:
Control command to V2I infrastructure. It has an array structure to control multiple infrastructures at the same time.
- from cargo_loading_service
/cargo_loding/infurastructre_commands
[tier4_v2x_msgs/msg/InfrastructureCommandArray]:
Control command to V2I infrastructure. It has an array structure to control multiple infrastructures at the same time.
- from autoware_state_machine
/autoware_state_machine/state
[autoware_state_machine_msgs/msg/StateMachine]:
State of the system.
- from user-defined broadcasting device
v2i status
(UDP) :
State from V2I infrastructure. It has an array structure to control the vehicle based on the state of multiple infrastructures.
- from autoware.universe
- output
- to autoware.universe
/system/v2x/virtual_traffic_light_status
[tier4_v2x_msgs/msg/VirtualTrafficLightStateArray]:
ROS2 interface fromv2i_status
(UDP).
- to cargo_loading_service
/v2i/infrastructer_states
[v2i_interface_msgs/msg/InfrastructureStateArray.msg]:
ROS2 interface fromv2i_status
(UDP).
- to user-defined broadcasting device
v2i command
(UDP) :
UDP protocol from/awapi/tmp/infrastructure_commands
.
- to autoware.universe
Broadcasting device must meet the following specifications.
{
"seq_num" : uint32,
"time": {
"sec": uint64,
"nanosec": unit32,
},
"request_array": [
{
"id": uint8,
"request": uint8
},
...
]
}
Item description
Name | Description |
---|---|
seq_num | Increment from 0 for each output. |
time | UNIX time at the time of output. |
request_array | Control commands for multiple V2I controllers. |
Name | Description |
---|---|
id | ID of the V2I infrastructure. |
request | Control command for the V2I infrastructure such as "open / close" and "turn on / off". The lower 4 bits and the upper 4 bits correspond to the states of 4 outputs and 4 inputs, respectively. |
{
"seq_num" : uint32,
"time": {
"sec": uint64,
"nanosec": unit32,
},
"id": uint8,
"status": uint8,
"detail": uint32.
"reply_array": [
{
"id": uint8,
"time": {
"sec": uint64,
"nanosec": unit32,
},
"status" : uint8,
"packet_time" : {
"sec" : uint64,
"msec" : uint16,
},
"gpio" : uint8,
"detail" : uint32,
"vehicle": {
"id" : uint8,
"request" : uint8,
"delay" : uint16,
"rssi" : int8,
},
"rssi" : int8
},
...
]
}
Item description
This is mainly about the status of broadcasting device.
Name | Description |
---|---|
seq_num | Increment from 0 for each output. |
time | UNIX time at the time of output. |
id | ID of the broadcasting device. |
status | Error status; 0: Normal, 1: Near the end of life, 2: Error |
detail | Error code for details. |
reply_array | The status of all connected V2I controller. |
This is about the status of each V2I controller.
Name | Description |
---|---|
id | ID of the V2I infrastructure. |
time | UNIX time at the time of output. |
status | Error status; 0: Normal, 1: Near the end of life, 2: Error |
packet_time | Unix time when the status of the V2I infrastructure was detected. |
gpio | The operating status of the V2I infrastructure such as "open / close" and "turn on / off". The lower 4 bits and the upper 4 bits correspond to the states of 4 outputs and 4 inputs, respectively. |
detail | Error code for details. |
veihcle | Sender status of the most recently sent V2I infrastructure control command. |
rssi | Received signal strength indicator from V2I controller to vehicle. |
This is the sender status of the most recently sent V2I infrastructure control command.
Name | Description |
---|---|
id | ID of the broadcasting device. |
request | The copy of the control command. |
delay | Response time to control (msec). |
rssi | Received signal strength indicator from vehicle to V2I controller. |
Add every optional tags below to virtual traffic light object.
Name | Range | Description |
---|---|---|
type | eva_beacon_system | Fixed value(To identify from other VirtualTrafficLight objects.) |
eva_beacon_system:id | 1-254 | ID which set to the equipment side beacon device. |
eva_beacon_system:ref:section | REQUESTING | Selects a section that enables V2I control. - REQUESTING: start_line to ref_line - (Empty): start_line to end_line |
eva_beacon_system:ref:permit_state | DRIVING | Selects vehicle states which enables V2I control. - DRIVING: During driving - (Empty): Do not care the vehicle states * This can't specify the behivior before a route supplied. |
eva_beacon_system:ref:request_bit | 0x0-0x0f | Value to be output by GPIO when the V2I control enabled. |
eva_beacon_system:ref:expect_bit | 0x0-0x0f | Expected value which use with stop control specified by response_type. |
eva_beacon_system:ref:response_type | ALWAYS AND MATCH |
Specifies how the beacon system allow the vehicle to pass. - ALWAYS: Always allows without calculation of value_bit and expect_bit. - AND: Allows when expect_bit & value_bit ≠0 - MATCH: Allows when expect_bit = value_bit |
eva_beacon_system:ref:mode | FIXED_VALUE TURN_DIRECTION |
- FIXED_VALUE Use request_bit and expect_bit as specified. - TURN_DIRECTION Calculate request_bit and expect_bit based on turn_direction value of VirtualTrafficLight lanelet object. ※bit0: Straight, bit1: Turn right, bit2: Turn left |
Add every optional tags below to lane object.
Name | Range | Description |
---|---|---|
inparking_loading | 0-254 | Set infrastructure ID |
inparking_engage | 1 | this tag is auto engage |
This module has a test mode. This link on how to enable test mode.