Apollo 10.0
自动驾驶开放平台
odometry_msg_converter.cc
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2023 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
18
19namespace apollo {
20namespace cyber {
21
24#ifdef ENABLE_ROS_MSG
25 auto ros_odometry_ptr = std::get<0>(in.values);
26 auto& ros_odometry = (*ros_odometry_ptr);
27
28 auto odometry_msg = std::get<0>(out.values);
29
30 auto unix_msg_time =
31 ros_odometry.header.stamp.sec + ros_odometry.header.stamp.nanosec / 1e9;
32 odometry_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
33 odometry_msg->mutable_header()->set_module_name("gnss");
34 odometry_msg->mutable_localization()->mutable_position()->set_x(
35 ros_odometry.pose.pose.position.x);
36 odometry_msg->mutable_localization()->mutable_position()->set_y(
37 ros_odometry.pose.pose.position.y);
38 odometry_msg->mutable_localization()->mutable_position()->set_z(
39 ros_odometry.pose.pose.position.z);
40 odometry_msg->mutable_localization()->mutable_linear_velocity()->set_x(
41 ros_odometry.twist.twist.linear.x);
42 odometry_msg->mutable_localization()->mutable_linear_velocity()->set_y(
43 ros_odometry.twist.twist.linear.y);
44 odometry_msg->mutable_localization()->mutable_linear_velocity()->set_z(
45 ros_odometry.twist.twist.linear.z);
46 odometry_msg->mutable_localization()->mutable_angular_velocity()->set_x(
47 ros_odometry.twist.twist.angular.x);
48 odometry_msg->mutable_localization()->mutable_angular_velocity()->set_y(
49 ros_odometry.twist.twist.angular.y);
50 odometry_msg->mutable_localization()->mutable_angular_velocity()->set_z(
51 ros_odometry.twist.twist.angular.z);
52 odometry_msg->mutable_localization()->mutable_orientation()->set_qx(
53 ros_odometry.pose.pose.orientation.x);
54 odometry_msg->mutable_localization()->mutable_orientation()->set_qy(
55 ros_odometry.pose.pose.orientation.y);
56 odometry_msg->mutable_localization()->mutable_orientation()->set_qz(
57 ros_odometry.pose.pose.orientation.z);
58 odometry_msg->mutable_localization()->mutable_orientation()->set_qw(
59 ros_odometry.pose.pose.orientation.w);
60
61#endif
62 return true;
63}
64
65} // namespace cyber
66} // namespace apollo
virtual bool ConvertMsg(InputTypes< RosOdometryMsgPtr > &, OutputTypes< OdometryOutputMsgPtr > &)
convert the message between ros and apollo
class register implement
Definition arena_queue.h:37
std::tuple< Types... > values
std::tuple< Types... > values