Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add awapi adapter package #103

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
1bd3e61
Feature/awapi awiv adapter first pr (#685)
tkimura4 Jul 14, 2020
52944ca
fix typo (#687)
tkimura4 Jul 14, 2020
9337299
move msg file to autoware_api_msgs (#693)
tkimura4 Jul 15, 2020
615cb3d
Fix/awapi awiv adapter (#698)
tkimura4 Jul 25, 2020
91ba803
add check mark for awapi readme (#723)
obi-t4 Aug 3, 2020
60eecb1
Feature/stop reason api (#729)
tkimura4 Aug 5, 2020
3eee0e6
modify put/goal -> put/route (#736)
obi-t4 Aug 5, 2020
0a7d95f
Feature/add goal api (#734)
tkimura4 Aug 6, 2020
65a9135
Feature/extract leaf diag info (#741)
tkimura4 Aug 12, 2020
5e2f2c2
update awapi readme (#747)
obi-t4 Aug 18, 2020
8bf517a
Feature/change output awapi (#782)
tkimura4 Aug 20, 2020
9131964
Feature/add battery to awapi (#804)
tkimura4 Aug 26, 2020
2d4b764
remove ROS1 packages temporarily
mitsudome-r Sep 29, 2020
fbb7727
Revert "remove ROS1 packages temporarily"
mitsudome-r Oct 8, 2020
d7224e8
add COLCON_IGNORE to ros1 packages
mitsudome-r Oct 8, 2020
d79c4f9
Rename launch files to launch.xml (#28)
nnmm Oct 15, 2020
db77d4d
Port awapi_awiv_adapter to ROS2 (#51)
nnmm Nov 16, 2020
6f101d4
Rename h files to hpp (#142)
nnmm Dec 3, 2020
a80598d
Adjust copyright notice on 532 out of 699 source files (#143)
nnmm Dec 3, 2020
a04d2c9
Use quotes for includes where appropriate (#144)
nnmm Dec 7, 2020
e6fdda5
Run uncrustify on the entire Pilot.Auto codebase (#151)
nnmm Dec 8, 2020
0b3d141
Add linters (#227)
jilaada Dec 16, 2020
dc6a7ca
Ros2 v0.8.0 awapi awiv adapter (#282)
wep21 Feb 4, 2021
4d50704
Ros2 v0.8.0 engage (#342)
wep21 Feb 17, 2021
b77b9ce
Ros2 v0.8.0 remove std msgs awapi (#348)
mitsudome-r Feb 22, 2021
602de97
Awapi update v0.9.0 (#350)
mitsudome-r Mar 1, 2021
d3d5df7
[awapi_awiv_adapter] fix bug in the launch file (#391)
mitsudome-r Mar 1, 2021
6f42617
modify pose_initialize for foa (#382)
mitsudome-r Mar 2, 2021
f195978
fix topic name (#404)
tkimura4 Mar 4, 2021
ed72a81
[awapi_awiv_adapter] fix qos for some of the topics in awapi_awiv_ada…
mitsudome-r Mar 10, 2021
34b8be0
Fix transform (#420)
kenji-miyake Mar 11, 2021
b6e0057
Fix typo in awapi module (#438)
kmiya Mar 16, 2021
ee961e9
Import v0.9.1 (#431)
kenji-miyake Mar 17, 2021
6efc47f
add tl overwriter relay in awapi (#451)
sgk-000 Mar 24, 2021
25ff289
add use_sim-time option (#454)
tkimura4 Mar 26, 2021
11fbc1f
Format launch files (#1219)
kenji-miyake Mar 30, 2021
28dd469
Fix rolling build errors (#1225)
kenji-miyake Apr 5, 2021
a82572f
Awapi relay component (#1237)
wep21 Apr 12, 2021
6a712ee
Refine BSD license name (#1244)
kmiya Apr 15, 2021
12cb496
Remove use_sim_time for set_parameter (#1260)
wep21 Apr 26, 2021
79c36e5
Clear hazard level when ignored (#1200) (#1289)
KeisukeShima Apr 28, 2021
5e5b761
fix flake8 (#1306)
taikitanaka3 May 11, 2021
25b57c0
Add perception traffic light state output (#1302)
isamu-takagi May 24, 2021
4a1b0d1
Fix lint errors (#1378)
kenji-miyake May 25, 2021
438ff5b
change msg type looking traffic light state (#1494)
wep21 Jun 23, 2021
fa1bdf6
Add markdownlint and prettier (#1661)
kenji-miyake Jul 20, 2021
619f330
Fix -Wunused-parameter (#1836)
kenji-miyake Aug 14, 2021
24e2461
Fix compiler warnings (#1837)
kenji-miyake Aug 15, 2021
9850e9f
Add autoware api (#1979)
isamu-takagi Aug 31, 2021
1935426
Feature/add virtual traffic light planner (#1588)
kenji-miyake Sep 3, 2021
361c9e9
Move launch file of external_cmd_selector (#2017)
isamu-takagi Sep 7, 2021
f48b82d
Use EmergencyState instead of deprecated EmergencyMode (#2030)
kenji-miyake Sep 8, 2021
845bfb7
add sort-package-xml hook in pre-commit (#1881)
KeisukeShima Sep 9, 2021
156c0a6
fix awapi_autoware_state_publisher (#2085)
k-obitsu Sep 15, 2021
b538e96
Feature/porting behavior path planner (#1645)
wep21 Oct 21, 2021
f64340e
Feature/porting motion velocity smoother (#1653)
wep21 Oct 21, 2021
b08c7db
Fix/update max velocity topic name (#2236)
satoshi-ota Oct 18, 2021
1ac4a79
Change formatter to clang-format and black (#2332)
kenji-miyake Nov 2, 2021
a84216a
Add COLCON_IGNORE (#500)
kenji-miyake Nov 4, 2021
797da25
Port awapi awiv adapter to .auto (#554)
isamu-takagi Nov 10, 2021
0c20051
Use pacmod3 msgs (#610)
wep21 Nov 12, 2021
4dc8c04
fix package.xml (#630)
takayuki5168 Nov 15, 2021
6d77c5f
adapt to actuation cmd/status as control msg (#646)
taikitanaka3 Nov 16, 2021
28b6935
fix awapi topics (#685)
taikitanaka3 Nov 17, 2021
0249a6d
fix mixed route topic (#695)
taikitanaka3 Nov 18, 2021
a891e56
Fix/psim topics emergency handler awapi (#702)
taikitanaka3 Nov 18, 2021
de4dc16
Fix topic type of awapi relay (#701)
isamu-takagi Nov 18, 2021
700cab5
fix door cmd topic (#711)
taikitanaka3 Nov 19, 2021
59f1d05
Update traffic light topic name (#729)
wep21 Nov 25, 2021
83a781c
Update twist topic name (#736)
wep21 Nov 26, 2021
c43e463
Merge branch 'autowarefoundation:tier4/proposal' into 1-add-awapi-ada…
taikitanaka3 Dec 3, 2021
7655026
fix: refactor readme
taikitanaka3 Dec 3, 2021
e5bcf40
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
taikitanaka3 Dec 3, 2021
1ae6a1f
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
taikitanaka3 Dec 6, 2021
d31c100
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
1222-takeshi Dec 6, 2021
ac76bdd
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
1222-takeshi Dec 6, 2021
6b3436c
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
1222-takeshi Dec 7, 2021
dcbab95
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
tkimura4 Dec 7, 2021
9f1263e
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
taikitanaka3 Dec 7, 2021
a52e458
Merge branch 'tier4/proposal' into 1-add-awapi-adapter
taikitanaka3 Dec 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions awapi/awapi_awiv_adapter/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
cmake_minimum_required(VERSION 3.5)
project(awapi_awiv_adapter)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic -Werror)
endif()

find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()

ament_auto_add_executable(awapi_awiv_adapter
src/awapi_awiv_adapter_node.cpp
src/awapi_awiv_adapter_core.cpp
src/awapi_vehicle_state_publisher.cpp
src/awapi_autoware_state_publisher.cpp
src/awapi_stop_reason_aggregator.cpp
src/awapi_v2x_aggregator.cpp
src/awapi_lane_change_state_publisher.cpp
src/awapi_obstacle_avoidance_state_publisher.cpp
src/awapi_max_velocity_publisher.cpp
src/awapi_autoware_util.cpp
src/awapi_pacmod_util.cpp
)

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()

ament_auto_package(INSTALL_TO_SHARE launch)
299 changes: 299 additions & 0 deletions awapi/awapi_awiv_adapter/Readme.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// Copyright 2020 Tier IV, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_STATE_PUBLISHER_HPP_
#define AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_STATE_PUBLISHER_HPP_

#include "awapi_awiv_adapter/awapi_autoware_util.hpp"

#include <rclcpp/rclcpp.hpp>

#include <autoware_api_msgs/msg/awapi_autoware_status.hpp>

#include <set>
#include <string>
#include <vector>

namespace autoware_api
{
class AutowareIvAutowareStatePublisher
{
public:
explicit AutowareIvAutowareStatePublisher(rclcpp::Node & node);
void statePublisher(const AutowareInfo & aw_info);

private:
rclcpp::Logger logger_;
rclcpp::Clock::SharedPtr clock_;
// publisher
rclcpp::Publisher<autoware_api_msgs::msg::AwapiAutowareStatus>::SharedPtr pub_state_;

// parameter

/* parameter for judging goal now */
bool arrived_goal_;
autoware_auto_system_msgs::msg::AutowareState::_state_type prev_state_;

void getAutowareStateInfo(
const autoware_auto_system_msgs::msg::AutowareState::ConstSharedPtr & autoware_state_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getControlModeInfo(
const autoware_auto_vehicle_msgs::msg::ControlModeReport::ConstSharedPtr & control_mode_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getGateModeInfo(
const autoware_control_msgs::msg::GateMode::ConstSharedPtr & gate_mode_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getEmergencyStateInfo(
const autoware_auto_system_msgs::msg::EmergencyState::ConstSharedPtr & emergency_state_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getCurrentMaxVelInfo(
const autoware_planning_msgs::msg::VelocityLimit::ConstSharedPtr & current_max_velocity_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getHazardStatusInfo(
const AutowareInfo & aw_info, autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getStopReasonInfo(
const autoware_planning_msgs::msg::StopReasonArray::ConstSharedPtr & stop_reason_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getDiagInfo(
const AutowareInfo & aw_info, autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getErrorDiagInfo(
const AutowareInfo & aw_info, autoware_api_msgs::msg::AwapiAutowareStatus * status);
void getGlobalRptInfo(
const pacmod3_msgs::msg::GlobalRpt::ConstSharedPtr & global_rpt_ptr,
autoware_api_msgs::msg::AwapiAutowareStatus * status);

bool isGoal(const autoware_auto_system_msgs::msg::AutowareState::ConstSharedPtr & autoware_state);
};

} // namespace autoware_api

#endif // AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_STATE_PUBLISHER_HPP_
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
// Copyright 2020 Tier IV, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_UTIL_HPP_
#define AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_UTIL_HPP_

#include <rclcpp/rclcpp.hpp>

#include <autoware_api_msgs/msg/stop_command.hpp>
#include <autoware_api_msgs/msg/velocity_limit.hpp>
#include <autoware_auto_control_msgs/msg/ackermann_control_command.hpp>
#include <autoware_auto_planning_msgs/msg/path.hpp>
#include <autoware_auto_planning_msgs/msg/trajectory.hpp>
#include <autoware_auto_system_msgs/msg/autoware_state.hpp>
#include <autoware_auto_system_msgs/msg/emergency_state.hpp>
#include <autoware_auto_system_msgs/msg/hazard_status_stamped.hpp>
#include <autoware_auto_vehicle_msgs/msg/control_mode_report.hpp>
#include <autoware_auto_vehicle_msgs/msg/gear_report.hpp>
#include <autoware_auto_vehicle_msgs/msg/hazard_lights_report.hpp>
#include <autoware_auto_vehicle_msgs/msg/steering_report.hpp>
#include <autoware_auto_vehicle_msgs/msg/turn_indicators_report.hpp>
#include <autoware_control_msgs/msg/gate_mode.hpp>
#include <autoware_planning_msgs/msg/is_avoidance_possible.hpp>
#include <autoware_planning_msgs/msg/lane_change_status.hpp>
#include <autoware_planning_msgs/msg/stop_reason_array.hpp>
#include <autoware_planning_msgs/msg/velocity_limit.hpp>
#include <autoware_v2x_msgs/msg/infrastructure_command_array.hpp>
#include <autoware_v2x_msgs/msg/virtual_traffic_light_state_array.hpp>
#include <autoware_vehicle_msgs/msg/battery_status.hpp>
#include <diagnostic_msgs/msg/diagnostic_array.hpp>
#include <geometry_msgs/msg/pose_stamped.hpp>
#include <nav_msgs/msg/odometry.hpp>
#include <pacmod3_msgs/msg/global_rpt.hpp>
#include <pacmod3_msgs/msg/system_rpt_int.hpp>
#include <sensor_msgs/msg/nav_sat_fix.hpp>

#include <tf2/utils.h>
#include <tf2_ros/transform_broadcaster.h>
#include <tf2_ros/transform_listener.h>

#include <memory>
#include <string>

namespace autoware_api
{
struct AutowareInfo
{
std::shared_ptr<geometry_msgs::msg::PoseStamped> current_pose_ptr;
autoware_auto_vehicle_msgs::msg::SteeringReport::ConstSharedPtr steer_ptr;
autoware_auto_control_msgs::msg::AckermannControlCommand::ConstSharedPtr vehicle_cmd_ptr;
autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ConstSharedPtr turn_indicators_ptr;
autoware_auto_vehicle_msgs::msg::HazardLightsReport::ConstSharedPtr hazard_lights_ptr;
nav_msgs::msg::Odometry::ConstSharedPtr odometry_ptr;
autoware_auto_vehicle_msgs::msg::GearReport::ConstSharedPtr gear_ptr;
autoware_vehicle_msgs::msg::BatteryStatus::ConstSharedPtr battery_ptr;
sensor_msgs::msg::NavSatFix::ConstSharedPtr nav_sat_ptr;
autoware_auto_system_msgs::msg::AutowareState::ConstSharedPtr autoware_state_ptr;
autoware_auto_vehicle_msgs::msg::ControlModeReport::ConstSharedPtr control_mode_ptr;
autoware_control_msgs::msg::GateMode::ConstSharedPtr gate_mode_ptr;
autoware_auto_system_msgs::msg::EmergencyState::ConstSharedPtr emergency_state_ptr;
autoware_auto_system_msgs::msg::HazardStatusStamped::ConstSharedPtr hazard_status_ptr;
autoware_planning_msgs::msg::StopReasonArray::ConstSharedPtr stop_reason_ptr;
autoware_v2x_msgs::msg::InfrastructureCommandArray::ConstSharedPtr v2x_command_ptr;
autoware_v2x_msgs::msg::VirtualTrafficLightStateArray::ConstSharedPtr v2x_state_ptr;
diagnostic_msgs::msg::DiagnosticArray::ConstSharedPtr diagnostic_ptr;
pacmod3_msgs::msg::GlobalRpt::ConstSharedPtr global_rpt_ptr;
autoware_planning_msgs::msg::LaneChangeStatus::ConstSharedPtr lane_change_available_ptr;
autoware_planning_msgs::msg::LaneChangeStatus::ConstSharedPtr lane_change_ready_ptr;
autoware_auto_planning_msgs::msg::Path::ConstSharedPtr lane_change_candidate_ptr;
autoware_planning_msgs::msg::IsAvoidancePossible::ConstSharedPtr obstacle_avoid_ready_ptr;
autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr obstacle_avoid_candidate_ptr;
autoware_api_msgs::msg::VelocityLimit::ConstSharedPtr max_velocity_ptr;
autoware_planning_msgs::msg::VelocityLimit::ConstSharedPtr current_max_velocity_ptr;
autoware_api_msgs::msg::StopCommand::ConstSharedPtr temporary_stop_ptr;
autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr autoware_planning_traj_ptr;
pacmod3_msgs::msg::SystemRptInt::ConstSharedPtr door_state_ptr;
};

template <class T>
T waitForParam(
rclcpp::Node * node, const std::string & remote_node_name, const std::string & param_name)
{
std::chrono::seconds sec(1);

auto param_client = std::make_shared<rclcpp::SyncParametersClient>(node, remote_node_name);

while (!param_client->wait_for_service(sec)) {
if (!rclcpp::ok()) {
RCLCPP_ERROR(node->get_logger(), "Interrupted while waiting for the service.");
return {};
}
RCLCPP_INFO_THROTTLE(
node->get_logger(), *node->get_clock(), 1000 /* ms */, "waiting for node: %s, param: %s\n",
remote_node_name.c_str(), param_name.c_str());
}

if (param_client->has_parameter(param_name)) {
return param_client->get_parameter<T>(param_name);
}

return {};
}

double lowpass_filter(const double current_value, const double prev_value, const double gain);

namespace planning_util
{
bool calcClosestIndex(
const autoware_auto_planning_msgs::msg::Trajectory & traj, const geometry_msgs::msg::Pose & pose,
size_t & output_closest_idx, const double dist_thr = 10.0, const double angle_thr = M_PI / 2.0);

inline geometry_msgs::msg::Pose getPose(
const autoware_auto_planning_msgs::msg::Trajectory & traj, const int idx)
{
return traj.points.at(idx).pose;
}

inline double calcDist2d(const geometry_msgs::msg::Point & a, const geometry_msgs::msg::Point & b)
{
return std::hypot((a.x - b.x), (a.y - b.y));
}

double normalizeEulerAngle(double euler);

double calcArcLengthFromWayPoint(
const autoware_auto_planning_msgs::msg::Trajectory & input_path, const size_t src_idx,
const size_t dst_idx);

double calcDistanceAlongTrajectory(
const autoware_auto_planning_msgs::msg::Trajectory & trajectory,
const geometry_msgs::msg::Pose & current_pose, const geometry_msgs::msg::Pose & target_pose);

} // namespace planning_util

} // namespace autoware_api

#endif // AWAPI_AWIV_ADAPTER__AWAPI_AUTOWARE_UTIL_HPP_
Loading