Closed JianKangEgon closed 2 years ago
Thank you for your post.
The can bus speed information (/vehicle/status/velocity_status
) is passed to the localization module for proper processing. If the can bus information is clearly more accurate than the localization matching, you can tell the information to the localization module through the error covariance.
The localization module also handles cases where the speed information from the can bus is disconnected. In such cases, the speed is calculated from the position estimation results. Therefore, I would suggest tuning the covariance parameters in Twist message sent to the EKF instead of sending the can bus information directly to the control module.
@TakaHoribe Thanks for your quick reply. This solves my concern.
I would suggest to analyze from three perspectives: accuracy and delay and safety.
vehicle can speed: in normal passenger cars, vehicle speed is calculated by ESP/ABS ECU based on WSS (wheel speed sensor), take narmal sedan for example, the accuracy of vehicle speed is around 0.002 m/s. EKF output: the accuracy the EKF could reach depends on the input source with best accuracy, RTK take xsens 680G as example has velocity accuracy of 0.05 m/s; while for NDT, I can not provide solid data, but it could not be better than 0.03m in range which leads to ~0.003m/s in speed with 10hz LiDAR scans. Result We could say that they have similar accuracy performance.
vehicle can speed: The delay of vehicle can speed is the processing time in ECU plus transmission time to AD computer, which is defined by n*10ms. EKF output: The EKF output delay depends on multiple sources, for EKF the delay is much smaller but with less confidence level, while with vehicle speed as input, the confidence level is high yet additional processing time is required for EKF algorism. Result Overall similar performance of both.
vehicle can speed: The vehicle ECU and CAN netork is designed to have high safety level, as long as the AD computer can communicate via CAN, the safety of the signal chain is solid. Also as long as the AD computer could send out CAN control message, it definitely reads back the vehicle can speed. EKF output: With additional input sources and addtional nodes, more risks is introduced to the whole pipeline and makes it a less safe solution . Result vehicle CAN speed safer.
Item | vehicle CAN speed | EKF twist output |
---|---|---|
Accuracy | Good | Good |
Delay | Good | Good |
Safety | Good | Not good |
So in my oppinion, it's better to use vehicle CAN speed directly in control module for bettery safety, while using EKF twist output does not introduce better perfomance in accuracy or delay.
Thank you for your post.
The can bus speed information (
/vehicle/status/velocity_status
) is passed to the localization module for proper processing. If the can bus information is clearly more accurate than the localization matching, you can tell the information to the localization module through the error covariance.The localization module also handles cases where the speed information from the can bus is disconnected. In such cases, the speed is calculated from the position estimation results. Therefore, I would suggest tuning the covariance parameters in Twist message sent to the EKF instead of sending the can bus information directly to the control module.
I agree with you! However,sometimes, the output of localization will shake in the longitudinal direction,which will lead to small different in velocity between EKF and Can bus. I think it may caused by the ndt when vehicle run on the road which has little variation in the longitudinal direction.
Refer to https://github.com/orgs/autowarefoundation/discussions/291#discussioncomment-2731408 Will close this issue.
Checklist
Description
Currently, the control module takes the kinematic states from localization module as the input. In other words, the performance of control module relies on the localization results by a large margin. In simulator, it works fine indeed, because the localization module and vehicle module are actually fake.
However, during road test on real vehicle, the robustness of localization module performs less reliable as vehicle driving-by-wire module, or wheel odometry sensor for robot. From my understanding, the algorithms of localization module (ICP / NDT matcher) are iterate computation progress. Sometimes, the steering wheel jitters due to the lost localization matcher. In comparison, the can bus data or odometer could provide relatively more helpful information.
By communication with the vehicle can bus or wheel encoder, the control module is able to acquire a much more accurate value. Thus, I'd love to propose this issue and discuss if it's reasonable to do so.
Purpose
Read vehicle velocity from can bus (or wheel encoder of robot) if these information are available.
Possible approaches
Definition of done
[ ] Rewrite the node file to change the topic message type.
[ ] Build successfully without any conflict
[ ] Validation and verification in both planning simulator and road test on real vehicle