Skip to content

Commit ccd3955

Browse files
authored
Merge branch 'main' into feat-configurable-qos
2 parents a6375ff + 9fcad6b commit ccd3955

31 files changed

+302
-181
lines changed

Diff for: .github/workflows/build-and-test-daily-arm64.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ jobs:
7373
fail_ci_if_error: false
7474
verbose: true
7575
flags: total-arm64
76+
token: ${{ secrets.CODECOV_TOKEN }}
7677

7778
- name: Show disk space after the tasks
7879
run: df -h

Diff for: .github/workflows/build-and-test-daily.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ jobs:
7373
fail_ci_if_error: false
7474
verbose: true
7575
flags: total
76+
token: ${{ secrets.CODECOV_TOKEN }}
7677

7778
- name: Show disk space after the tasks
7879
run: df -h

Diff for: .github/workflows/build-and-test-differential-arm64.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ jobs:
8787
fail_ci_if_error: false
8888
verbose: true
8989
flags: differential-arm64
90+
token: ${{ secrets.CODECOV_TOKEN }}
9091

9192
- name: Show disk space after the tasks
9293
run: df -h

Diff for: .github/workflows/build-and-test-differential.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ jobs:
114114
fail_ci_if_error: false
115115
verbose: true
116116
flags: differential
117+
token: ${{ secrets.CODECOV_TOKEN }}
117118

118119
- name: Show disk space after the tasks
119120
run: df -h

Diff for: .github/workflows/build-and-test.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ jobs:
115115
fail_ci_if_error: false
116116
verbose: true
117117
flags: total
118+
token: ${{ secrets.CODECOV_TOKEN }}
118119

119120
- name: Show disk space after the tasks
120121
run: df -h

Diff for: .github/workflows/cppcheck-daily.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
continue-on-error: true
2323
id: cppcheck
2424
run: |
25-
cppcheck --enable=all --inconclusive --check-level=exhaustive --suppress=*:*/test/* --error-exitcode=1 --xml . 2> cppcheck-report.xml
25+
cppcheck --enable=all --inconclusive --check-level=exhaustive --suppress=*:*/test/* --error-exitcode=1 --xml --inline-suppr . 2> cppcheck-report.xml
2626
shell: bash
2727

2828
- name: Count errors by error ID and severity

Diff for: .github/workflows/cppcheck-differential.yaml

+27-11
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ jobs:
2222
sudo apt-get update
2323
sudo apt-get install -y git
2424
25+
- name: Install colcon
26+
run: |
27+
sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
28+
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
29+
sudo apt update
30+
sudo apt install python3-colcon-common-extensions
31+
2532
# cppcheck from apt does not yet support --check-level args, and thus install from snap
2633
- name: Install Cppcheck from snap
2734
run: |
@@ -31,33 +38,42 @@ jobs:
3138
run: git fetch origin ${{ github.base_ref }}
3239
shell: bash
3340

34-
- name: Get changed files (existing files only)
35-
id: get-changed-files
41+
- name: Get modified packages
42+
id: get-modified-packages
43+
uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1
44+
45+
- name: Get full paths of modified packages
46+
id: get-full-paths
3647
run: |
37-
echo "changed-files=$(git diff --name-only "origin/${{ github.base_ref }}"...HEAD | grep -E '\.(cpp|hpp)$' | while read -r file; do [ -e "$file" ] && echo -n "$file "; done)" >> $GITHUB_OUTPUT
38-
shell: bash
48+
modified_packages="${{ steps.get-modified-packages.outputs.modified-packages }}"
49+
paths=""
50+
for pkg in $modified_packages; do
51+
path=$(colcon list --packages-select $pkg | awk '{print $2}' | xargs realpath)
52+
paths="$paths $path"
53+
done
54+
echo "full-paths=$paths" >> $GITHUB_OUTPUT
3955
40-
- name: Run Cppcheck on changed files
41-
if: ${{ steps.get-changed-files.outputs.changed-files != '' }}
56+
- name: Run Cppcheck on modified packages
57+
if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }}
4258
continue-on-error: true
4359
id: cppcheck
4460
run: |
45-
echo "Running Cppcheck on changed files: ${{ steps.get-changed-files.outputs.changed-files }}"
46-
cppcheck --enable=all --inconclusive --check-level=exhaustive --error-exitcode=1 --suppressions-list=.cppcheck_suppressions ${{ steps.get-changed-files.outputs.changed-files }} 2> cppcheck-report.txt
61+
echo "Running Cppcheck on modified packages: ${{ steps.get-modified-packages.outputs.modified-packages }}"
62+
cppcheck --enable=all --inconclusive --check-level=exhaustive --error-exitcode=1 --suppressions-list=.cppcheck_suppressions --inline-suppr ${{ steps.get-full-paths.outputs.full-paths }} 2> cppcheck-report.txt
4763
shell: bash
4864

4965
- name: Show cppcheck-report result
50-
if: ${{ steps.get-changed-files.outputs.changed-files != '' }}
66+
if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }}
5167
run: |
5268
cat cppcheck-report.txt
5369
5470
- name: Upload Cppcheck report
55-
if: ${{ steps.get-changed-files.outputs.changed-files != '' }}
71+
if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }}
5672
uses: actions/upload-artifact@v2
5773
with:
5874
name: cppcheck-report
5975
path: cppcheck-report.txt
6076

6177
- name: Fail the job if Cppcheck failed
62-
if: ${{ steps.get-changed-files.outputs.changed-files != '' && steps.cppcheck.outcome == 'failure' }}
78+
if: ${{ steps.get-modified-packages.outputs.modified-packages != '' && steps.cppcheck.outcome == 'failure' }}
6379
run: exit 1
Loading

Diff for: common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/signal_display.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ private Q_SLOTS:
7676
rviz_common::properties::IntProperty * property_left_;
7777
rviz_common::properties::IntProperty * property_top_;
7878
rviz_common::properties::ColorProperty * property_signal_color_;
79+
rviz_common::properties::FloatProperty * property_handle_angle_scale_;
7980
std::unique_ptr<rviz_common::properties::RosTopicProperty> steering_topic_property_;
8081
std::unique_ptr<rviz_common::properties::RosTopicProperty> gear_topic_property_;
8182
std::unique_ptr<rviz_common::properties::RosTopicProperty> speed_topic_property_;

Diff for: common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/steering_wheel_display.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ class SteeringWheelDisplay
3636
{
3737
public:
3838
SteeringWheelDisplay();
39-
void drawSteeringWheel(QPainter & painter, const QRectF & backgroundRect);
39+
void drawSteeringWheel(
40+
QPainter & painter, const QRectF & backgroundRect, float handle_angle_scale_);
4041
void updateSteeringData(const autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr & msg);
4142

4243
private:
@@ -46,6 +47,7 @@ class SteeringWheelDisplay
4647
QImage wheelImage;
4748
QImage scaledWheelImage;
4849
QImage coloredImage(const QImage & source, const QColor & color);
50+
autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr last_msg_ptr_;
4951
};
5052

5153
} // namespace autoware_overlay_rviz_plugin

Diff for: common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/signal_display.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ SignalDisplay::SignalDisplay()
4949
property_signal_color_ = new rviz_common::properties::ColorProperty(
5050
"Signal Color", QColor(QString("#00E678")), "Color of the signal arrows", this,
5151
SLOT(updateOverlayColor()));
52+
property_handle_angle_scale_ = new rviz_common::properties::FloatProperty(
53+
"Handle Angle Scale", 17.0, "Scale of the steering wheel handle angle", this,
54+
SLOT(updateOverlaySize()));
5255

5356
// Initialize the component displays
5457
steering_wheel_display_ = std::make_unique<SteeringWheelDisplay>();
@@ -285,7 +288,8 @@ void SignalDisplay::drawWidget(QImage & hud)
285288
}
286289

287290
if (steering_wheel_display_) {
288-
steering_wheel_display_->drawSteeringWheel(painter, backgroundRect);
291+
steering_wheel_display_->drawSteeringWheel(
292+
painter, backgroundRect, property_handle_angle_scale_->getFloat());
289293
}
290294

291295
if (speed_display_) {

Diff for: common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/steering_wheel_display.cpp

+36-14
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,17 @@ void SteeringWheelDisplay::updateSteeringData(
5959
const autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr & msg)
6060
{
6161
try {
62-
// Assuming msg->steering_angle is the field you're interested in
63-
float steeringAngle = msg->steering_tire_angle;
64-
// we received it as a radian value, but we want to display it in degrees
65-
steering_angle_ =
66-
(steeringAngle * -180 / M_PI) *
67-
17; // 17 is the ratio between the steering wheel and the steering tire angle i assume
62+
last_msg_ptr_ = msg;
63+
64+
steering_angle_ = msg->steering_tire_angle;
6865
} catch (const std::exception & e) {
6966
// Log the error
7067
std::cerr << "Error in processMessage: " << e.what() << std::endl;
7168
}
7269
}
7370

74-
void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF & backgroundRect)
71+
void SteeringWheelDisplay::drawSteeringWheel(
72+
QPainter & painter, const QRectF & backgroundRect, float handle_angle_scale_)
7573
{
7674
// Enable Antialiasing for smoother drawing
7775
painter.setRenderHint(QPainter::Antialiasing, true);
@@ -80,7 +78,7 @@ void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF &
8078
QImage wheel = coloredImage(scaledWheelImage, gray);
8179

8280
// Rotate the wheel
83-
float steeringAngle = steering_angle_; // No need to round here
81+
float steeringAngle = std::round(handle_angle_scale_ * (steering_angle_ / M_PI) * -180.0);
8482
// Calculate the position
8583
int wheelCenterX = backgroundRect.left() + wheel.width() + 54 + 54;
8684
int wheelCenterY = backgroundRect.height() / 2;
@@ -99,16 +97,40 @@ void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF &
9997
// Draw the rotated image
10098
painter.drawImage(drawPoint.x(), drawPoint.y(), rotatedWheel);
10199

102-
QString steeringAngleStringAfterModulo = QString::number(fmod(steeringAngle, 360), 'f', 0);
100+
std::ostringstream steering_angle_ss;
101+
if (last_msg_ptr_) {
102+
steering_angle_ss << std::fixed << std::setprecision(1) << steering_angle_ * 180.0 / M_PI
103+
<< "°";
104+
} else {
105+
steering_angle_ss << "N/A";
106+
}
107+
108+
QString steeringAngleString = QString::fromStdString(steering_angle_ss.str());
109+
// if the string doesn't have a negative sign, add a space to the front of the string
110+
// to align the text in both cases (negative and positive)
111+
if (steeringAngleString[0] != '-') {
112+
steeringAngleString = " " + steeringAngleString;
113+
}
103114

104115
// Draw the steering angle text
105-
QFont steeringFont("Quicksand", 9, QFont::Bold);
116+
QFont steeringFont("Quicksand", 8, QFont::Bold);
106117
painter.setFont(steeringFont);
107118
painter.setPen(QColor(0, 0, 0, 255));
108-
QRect steeringRect(
109-
wheelCenterX - wheelImage.width() / 2, wheelCenterY - wheelImage.height() / 2,
110-
wheelImage.width(), wheelImage.height());
111-
painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleStringAfterModulo + "°");
119+
// QRect steeringRect(
120+
// wheelCenterX - wheelImage.width() / 2 + 1, wheelCenterY - wheelImage.height() / 2,
121+
// wheelImage.width(), wheelImage.height());
122+
// painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleString);
123+
124+
// Measure the text
125+
QFontMetrics fontMetrics(steeringFont);
126+
QRect textRect = fontMetrics.boundingRect(steeringAngleString);
127+
128+
// Center the text
129+
int textX = wheelCenterX - textRect.width() / 2;
130+
int textY = wheelCenterY - textRect.height() / 2;
131+
132+
QRect steeringRect(textX, textY, textRect.width(), textRect.height());
133+
painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleString);
112134
}
113135

114136
QImage SteeringWheelDisplay::coloredImage(const QImage & source, const QColor & color)

Diff for: evaluator/autoware_control_evaluator/include/autoware/control_evaluator/control_evaluator_node.hpp

+21-2
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717

1818
#include "autoware/control_evaluator/metrics/deviation_metrics.hpp"
1919

20+
#include <autoware/route_handler/route_handler.hpp>
2021
#include <autoware/universe_utils/ros/polling_subscriber.hpp>
2122
#include <rclcpp/rclcpp.hpp>
2223

24+
#include "geometry_msgs/msg/accel_with_covariance_stamped.hpp"
25+
#include <autoware_planning_msgs/msg/lanelet_route.hpp>
2326
#include <diagnostic_msgs/msg/diagnostic_array.hpp>
2427
#include <nav_msgs/msg/odometry.hpp>
2528

26-
#include <array>
2729
#include <deque>
28-
#include <memory>
30+
#include <optional>
2931
#include <string>
3032
#include <utility>
3133
#include <vector>
@@ -39,6 +41,9 @@ using diagnostic_msgs::msg::DiagnosticStatus;
3941
using geometry_msgs::msg::Point;
4042
using geometry_msgs::msg::Pose;
4143
using nav_msgs::msg::Odometry;
44+
using LaneletMapBin = autoware_map_msgs::msg::LaneletMapBin;
45+
using autoware_planning_msgs::msg::LaneletRoute;
46+
using geometry_msgs::msg::AccelWithCovarianceStamped;
4247

4348
/**
4449
* @brief Node for control evaluation
@@ -62,6 +67,9 @@ class controlEvaluatorNode : public rclcpp::Node
6267
const DiagnosticArray & diag, const std::string & function_name);
6368

6469
DiagnosticStatus generateAEBDiagnosticStatus(const DiagnosticStatus & diag);
70+
DiagnosticStatus generateLaneletDiagnosticStatus(const Pose & ego_pose) const;
71+
DiagnosticStatus generateKinematicStateDiagnosticStatus(
72+
const Odometry & odom, const AccelWithCovarianceStamped & accel_stamped);
6573

6674
void onDiagnostics(const DiagnosticArray::ConstSharedPtr diag_msg);
6775
void onTimer();
@@ -74,11 +82,20 @@ class controlEvaluatorNode : public rclcpp::Node
7482

7583
autoware::universe_utils::InterProcessPollingSubscriber<Odometry> odometry_sub_{
7684
this, "~/input/odometry"};
85+
autoware::universe_utils::InterProcessPollingSubscriber<AccelWithCovarianceStamped> accel_sub_{
86+
this, "/localization/acceleration"};
7787
autoware::universe_utils::InterProcessPollingSubscriber<Trajectory> traj_sub_{
7888
this, "~/input/trajectory"};
89+
autoware::universe_utils::InterProcessPollingSubscriber<LaneletRoute> route_subscriber_{
90+
this, "~/input/route", rclcpp::QoS{1}.transient_local()};
91+
autoware::universe_utils::InterProcessPollingSubscriber<LaneletMapBin> vector_map_subscriber_{
92+
this, "~/input/vector_map", rclcpp::QoS{1}.transient_local()};
7993

8094
rclcpp::Publisher<DiagnosticArray>::SharedPtr metrics_pub_;
8195

96+
// update Route Handler
97+
void getRouteData();
98+
8299
// Calculator
83100
// Metrics
84101
std::deque<rclcpp::Time> stamps_;
@@ -87,7 +104,9 @@ class controlEvaluatorNode : public rclcpp::Node
87104
std::deque<std::pair<DiagnosticStatus, rclcpp::Time>> diag_queue_;
88105
const std::vector<std::string> target_functions_ = {"autonomous_emergency_braking"};
89106

107+
autoware::route_handler::RouteHandler route_handler_;
90108
rclcpp::TimerBase::SharedPtr timer_;
109+
std::optional<AccelWithCovarianceStamped> prev_acc_stamped_{std::nullopt};
91110
};
92111
} // namespace control_diagnostics
93112

Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
<launch>
22
<arg name="input/diagnostics" default="/diagnostics"/>
33
<arg name="input/odometry" default="/localization/kinematic_state"/>
4+
<arg name="input/acceleration" default="/localization/acceleration"/>
45
<arg name="input/trajectory" default="/planning/scenario_planning/trajectory"/>
6+
<arg name="map_topic_name" default="/map/vector_map"/>
7+
<arg name="route_topic_name" default="/planning/mission_planning/route"/>
58
<!-- control evaluator -->
69
<group>
710
<node name="control_evaluator" exec="control_evaluator" pkg="autoware_control_evaluator">
811
<param from="$(find-pkg-share autoware_control_evaluator)/param/control_evaluator.defaults.yaml"/>
912
<remap from="~/input/diagnostics" to="$(var input/diagnostics)"/>
1013
<remap from="~/input/odometry" to="$(var input/odometry)"/>
14+
<remap from="~/input/acceleration" to="$(var input/acceleration)"/>
1115
<remap from="~/input/trajectory" to="$(var input/trajectory)"/>
1216
<remap from="~/metrics" to="/diagnostic/control_evaluator/metrics"/>
17+
<remap from="~/input/vector_map" to="$(var map_topic_name)"/>
18+
<remap from="~/input/route" to="$(var route_topic_name)"/>
1319
</node>
1420
</group>
1521
</launch>

Diff for: evaluator/autoware_control_evaluator/package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
<depend>autoware_motion_utils</depend>
1818
<depend>autoware_planning_msgs</depend>
19+
<depend>autoware_route_handler</depend>
1920
<depend>autoware_universe_utils</depend>
2021
<depend>diagnostic_msgs</depend>
2122
<depend>pluginlib</depend>

0 commit comments

Comments
 (0)