|
6 | 6 |
|
7 | 7 | using dseconds = std::chrono::duration<double>; |
8 | 8 |
|
9 | | -AirsimROSWrapper::AirsimROSWrapper(const std::shared_ptr<rclcpp::Node>& nh, const std::shared_ptr<rclcpp::Node>& nh_private, const std::string& host_ip) : nh_(nh), |
10 | | - nh_private_(nh_private), |
11 | | - // lidar_async_spinner_(1, &lidar_timer_cb_queue_), // same as above, but for lidar |
12 | | - airsim_client_(host_ip), |
13 | | - airsim_client_lidar_(host_ip), |
14 | | - static_tf_pub_(this->nh_private_) |
| 9 | +AirsimROSWrapper::AirsimROSWrapper(const std::shared_ptr<rclcpp::Node>& nh, const std::string& host_ip) |
| 10 | + : nh_(nh), |
| 11 | + airsim_client_(host_ip), |
| 12 | + airsim_client_lidar_(host_ip), |
| 13 | + static_tf_pub_(this->nh_) |
15 | 14 | { |
16 | 15 | try { |
17 | 16 | auto settingsText = this->readTextFromFile(common_utils::FileSystem::getConfigFilePath()); |
@@ -121,34 +120,34 @@ void AirsimROSWrapper::initialize_ros() |
121 | 120 | double publish_static_tf_every_n_sec; |
122 | 121 | bool manual_mode; |
123 | 122 |
|
124 | | - mission_name_ = nh_private_->declare_parameter<std::string>("mission_name" , ""); |
125 | | - track_name_ = nh_private_->declare_parameter<std::string>("track_name" , ""); |
126 | | - competition_mode_ = nh_private_->declare_parameter<bool> ("competition_mode" , false); |
127 | | - manual_mode = nh_private_->declare_parameter<bool> ("manual_mode" , false); |
128 | | - update_odom_every_n_sec = nh_private_->declare_parameter<double> ("update_odom_every_n_sec" , 0.004); |
129 | | - update_gps_every_n_sec = nh_private_->declare_parameter<double> ("update_gps_every_n_sec" , 0.1); |
130 | | - update_imu_every_n_sec = nh_private_->declare_parameter<double> ("update_imu_every_n_sec" , 0.004); |
131 | | - update_gss_every_n_sec = nh_private_->declare_parameter<double> ("update_gss_every_n_sec" , 0.01); |
132 | | - publish_static_tf_every_n_sec = nh_private_->declare_parameter<double> ("publish_static_tf_every_n_sec", 1.0); |
| 123 | + mission_name_ = nh_->declare_parameter<std::string>("mission_name" , ""); |
| 124 | + track_name_ = nh_->declare_parameter<std::string>("track_name" , ""); |
| 125 | + competition_mode_ = nh_->declare_parameter<bool> ("competition_mode" , false); |
| 126 | + manual_mode = nh_->declare_parameter<bool> ("manual_mode" , false); |
| 127 | + update_odom_every_n_sec = nh_->declare_parameter<double> ("update_odom_every_n_sec" , 0.004); |
| 128 | + update_gps_every_n_sec = nh_->declare_parameter<double> ("update_gps_every_n_sec" , 0.1); |
| 129 | + update_imu_every_n_sec = nh_->declare_parameter<double> ("update_imu_every_n_sec" , 0.004); |
| 130 | + update_gss_every_n_sec = nh_->declare_parameter<double> ("update_gss_every_n_sec" , 0.01); |
| 131 | + publish_static_tf_every_n_sec = nh_->declare_parameter<double> ("publish_static_tf_every_n_sec", 1.0); |
133 | 132 |
|
134 | | - RCLCPP_INFO_STREAM(nh_private_->get_logger(), "Manual mode: " << manual_mode); |
| 133 | + RCLCPP_INFO_STREAM(nh_->get_logger(), "Manual mode: " << manual_mode); |
135 | 134 |
|
136 | 135 |
|
137 | 136 | create_ros_pubs_from_settings_json(); |
138 | 137 |
|
139 | 138 | if(!competition_mode_) { |
140 | | - odom_update_timer_ = nh_private_->create_wall_timer(dseconds{update_odom_every_n_sec}, std::bind(&AirsimROSWrapper::odom_cb, this)); |
141 | | - extra_info_timer_ = nh_private_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::extra_info_cb, this)); |
| 139 | + odom_update_timer_ = nh_->create_wall_timer(dseconds{update_odom_every_n_sec}, std::bind(&AirsimROSWrapper::odom_cb, this)); |
| 140 | + extra_info_timer_ = nh_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::extra_info_cb, this)); |
142 | 141 | } |
143 | 142 |
|
144 | | - gps_update_timer_ = nh_private_->create_wall_timer(dseconds{update_gps_every_n_sec}, std::bind(&AirsimROSWrapper::gps_timer_cb, this)); |
145 | | - imu_update_timer_ = nh_private_->create_wall_timer(dseconds{update_imu_every_n_sec}, std::bind(&AirsimROSWrapper::imu_timer_cb, this)); |
146 | | - gss_update_timer_ = nh_private_->create_wall_timer(dseconds{update_gss_every_n_sec}, std::bind(&AirsimROSWrapper::gss_timer_cb, this)); |
147 | | - statictf_timer_ = nh_private_->create_wall_timer(dseconds{publish_static_tf_every_n_sec}, std::bind(&AirsimROSWrapper::statictf_cb, this)); |
| 143 | + gps_update_timer_ = nh_->create_wall_timer(dseconds{update_gps_every_n_sec}, std::bind(&AirsimROSWrapper::gps_timer_cb, this)); |
| 144 | + imu_update_timer_ = nh_->create_wall_timer(dseconds{update_imu_every_n_sec}, std::bind(&AirsimROSWrapper::imu_timer_cb, this)); |
| 145 | + gss_update_timer_ = nh_->create_wall_timer(dseconds{update_gss_every_n_sec}, std::bind(&AirsimROSWrapper::gss_timer_cb, this)); |
| 146 | + statictf_timer_ = nh_->create_wall_timer(dseconds{publish_static_tf_every_n_sec}, std::bind(&AirsimROSWrapper::statictf_cb, this)); |
148 | 147 |
|
149 | | - statistics_timer_ = nh_private_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::statistics_timer_cb, this)); |
150 | | - go_signal_timer_ = nh_private_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::go_signal_timer_cb, this)); |
151 | | - go_timestamp_ = nh_private_->get_clock()->now(); |
| 148 | + statistics_timer_ = nh_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::statistics_timer_cb, this)); |
| 149 | + go_signal_timer_ = nh_->create_wall_timer(dseconds{1}, std::bind(&AirsimROSWrapper::go_signal_timer_cb, this)); |
| 150 | + go_timestamp_ = nh_->get_clock()->now(); |
152 | 151 |
|
153 | 152 | airsim_client_.enableApiControl(!manual_mode, vehicle_name); |
154 | 153 |
|
@@ -187,7 +186,7 @@ void AirsimROSWrapper::create_ros_pubs_from_settings_json() |
187 | 186 | gss_pub = nh_->create_publisher<geometry_msgs::msg::TwistStamped>("gss", 10); |
188 | 187 |
|
189 | 188 | bool UDP_control; |
190 | | - nh_private_->get_parameter("UDP_control", UDP_control); |
| 189 | + nh_->get_parameter("UDP_control", UDP_control); |
191 | 190 |
|
192 | 191 | if(UDP_control){ |
193 | 192 | control_cmd_sub = nh_->create_subscription<fs_msgs::msg::ControlCommand>("control_command", 1, std::bind(&AirsimROSWrapper::car_control_cb, this, std::placeholders::_1)); |
@@ -253,7 +252,7 @@ void AirsimROSWrapper::create_ros_pubs_from_settings_json() |
253 | 252 | auto lidar_index = lidar_pub_vec_.size() -1; |
254 | 253 |
|
255 | 254 | auto x = [this, sensor_name, lidar_index]() { this->lidar_timer_cb(sensor_name, lidar_index); }; |
256 | | - airsim_lidar_update_timers_.push_back(nh_private_->create_wall_timer(dseconds{double(1) / double(lidar_setting.horizontal_rotation_frequency)}, x)); |
| 255 | + airsim_lidar_update_timers_.push_back(nh_->create_wall_timer(dseconds{double(1) / double(lidar_setting.horizontal_rotation_frequency)}, x)); |
257 | 256 | break; |
258 | 257 | } |
259 | 258 | default: |
@@ -306,7 +305,7 @@ nav_msgs::msg::Odometry AirsimROSWrapper::get_odom_msg_from_airsim_state(const m |
306 | 305 | { |
307 | 306 | nav_msgs::msg::Odometry odom_enu_msg; |
308 | 307 | odom_enu_msg.header.frame_id = "fsds/map"; |
309 | | - odom_enu_msg.header.stamp = nh_private_->get_clock()->now(); |
| 308 | + odom_enu_msg.header.stamp = nh_->get_clock()->now(); |
310 | 309 | odom_enu_msg.child_frame_id = "fsds/FSCar"; |
311 | 310 | odom_enu_msg.pose.pose.position.x = car_state.getPosition().x(); |
312 | 311 | odom_enu_msg.pose.pose.position.y = car_state.getPosition().y(); |
@@ -509,7 +508,7 @@ void AirsimROSWrapper::imu_timer_cb() |
509 | 508 | imu_msg.linear_acceleration_covariance[4] = imu_data.sigma_vrw*imu_data.sigma_vrw; |
510 | 509 | imu_msg.linear_acceleration_covariance[8] = imu_data.sigma_vrw*imu_data.sigma_vrw; |
511 | 510 | imu_msg.header.frame_id = "fsds/" + vehicle_name; |
512 | | - // imu_msg.header.stamp = nh_private_->get_clock()->now(); |
| 511 | + // imu_msg.header.stamp = nh_->get_clock()->now(); |
513 | 512 | { |
514 | 513 | ros_bridge::ROSMsgCounter counter(&imu_pub_statistics); |
515 | 514 | imu_pub->publish(imu_msg); |
@@ -562,7 +561,7 @@ void AirsimROSWrapper::statictf_cb() |
562 | 561 | { |
563 | 562 | for (auto& static_tf_msg : static_tf_msg_vec_) |
564 | 563 | { |
565 | | - static_tf_msg.header.stamp = nh_private_->get_clock()->now(); |
| 564 | + static_tf_msg.header.stamp = nh_->get_clock()->now(); |
566 | 565 | static_tf_pub_.sendTransform(static_tf_msg); |
567 | 566 | } |
568 | 567 | } |
@@ -684,7 +683,7 @@ void AirsimROSWrapper::lidar_timer_cb(const std::string& lidar_name, const int l |
684 | 683 | } |
685 | 684 | lidar_msg = get_lidar_msg_from_airsim(lidar_name, lidar_data); // todo make const ptr msg to avoid copy |
686 | 685 | lidar_msg.header.frame_id = "fsds/" + lidar_name; |
687 | | - lidar_msg.header.stamp = nh_private_->get_clock()->now(); |
| 686 | + lidar_msg.header.stamp = nh_->get_clock()->now(); |
688 | 687 |
|
689 | 688 | { |
690 | 689 | ros_bridge::ROSMsgCounter counter(&lidar_pub_vec_statistics[lidar_index]); |
|
0 commit comments