Skip to content

Commit 1fd2dce

Browse files
apply review comments
1 parent 5b73970 commit 1fd2dce

File tree

4 files changed

+475
-260
lines changed

4 files changed

+475
-260
lines changed

drake_ros_core/CMakeLists.txt

+12-10
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,22 @@ if(NOT Eigen3_FOUND)
2626
endif()
2727

2828
add_library(drake_ros_core
29-
src/geometry_conversions.cc
3029
src/drake_ros.cc
30+
src/geometry_conversions.cc
3131
src/publisher.cc
3232
src/ros_interface_system.cc
3333
src/ros_publisher_system.cc
3434
src/ros_subscriber_system.cc
3535
src/subscription.cc
3636
)
3737

38-
target_link_libraries(drake_ros_core PUBLIC
39-
drake::drake
40-
rclcpp::rclcpp
41-
rosidl_runtime_c::rosidl_runtime_c
42-
rosidl_typesupport_cpp::rosidl_typesupport_cpp
43-
Eigen3::Eigen
44-
${geometry_msgs_TARGETS}
38+
ament_target_dependencies(drake_ros_core
39+
Eigen3
40+
drake
41+
geometry_msgs
42+
rclcpp
43+
rosidl_runtime_c
44+
rosidl_typesupport_cpp
4545
)
4646

4747
target_include_directories(drake_ros_core
@@ -56,10 +56,10 @@ ament_export_libraries(drake_ros_core)
5656
ament_export_targets(${PROJECT_NAME})
5757

5858
ament_export_dependencies(drake)
59+
ament_export_dependencies(geometry_msgs)
5960
ament_export_dependencies(rclcpp)
6061
ament_export_dependencies(rosidl_runtime_c)
6162
ament_export_dependencies(rosidl_typesupport_cpp)
62-
ament_export_dependencies(geometry_msgs)
6363

6464
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}
6565
ARCHIVE DESTINATION lib
@@ -116,6 +116,8 @@ if(BUILD_TESTING)
116116
# We do not expose `rmw_isoliation` via CMake.
117117
_TEST_DISABLE_RMW_ISOLATION
118118
)
119+
# N.B. We cannot use `ament_target_dependencies` because we cannot access this
120+
# package's exported ament target.
119121
target_link_libraries(test_pub_sub
120122
drake::drake
121123
drake_ros_core
@@ -136,7 +138,7 @@ if(BUILD_TESTING)
136138
)
137139

138140
ament_add_gtest(test_geometry_conversions test/test_geometry_conversions.cc)
139-
taRget_link_libraries(test_geometry_conversions drake_ros_core)
141+
target_link_libraries(test_geometry_conversions drake_ros_core)
140142
endif()
141143

142144
ament_package()

drake_ros_core/include/drake_ros_core/geometry_conversions.h

+77-24
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,35 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
/**
16+
@file
17+
18+
Conversions for ROS's geometry_msgs types for Drake and Eigen types that Drake
19+
uses.
20+
21+
### Type Suffixes
22+
23+
Note that quantities like `Eigen::Vector3d`, `Eigen::Isometry3d`,
24+
`drake::math::RigidTransformd`, etc. all have the `d` suffix to denote
25+
templating on `double`.
26+
27+
For simplicity, we strip these suffixes from the names in the conversion
28+
functions.
29+
30+
### Spatial Vectors
31+
32+
All 6d spatial vectors are ordered by [rotational; translational], per
33+
ttps://drake.mit.edu/doxygen_cxx/group__multibody__spatial__vectors.html
34+
35+
### Isometry3 Elements
36+
37+
All Isometry3<> conversion methods actually use RigidTransform as an
38+
intermediate. This means that we are restricted to SE(3), or more specifically,
39+
rotations are constrained to be in SO(3), not just O(3), so it is not to
40+
express mirroring in Isometry3<> results (even though the type is capable of
41+
expressing it).
42+
*/
43+
1544
#pragma once
1645

1746
#include <Eigen/Geometry>
@@ -28,66 +57,90 @@
2857

2958
namespace drake_ros_core {
3059

31-
Eigen::Vector3d RosPointToVector3d(const geometry_msgs::msg::Point& point);
60+
// Vector / Translation.
61+
62+
Eigen::Vector3d RosPointToVector3(const geometry_msgs::msg::Point& point);
63+
64+
geometry_msgs::msg::Point Vector3ToRosPoint(const Eigen::Vector3d& point);
65+
66+
Eigen::Vector3d RosVector3ToVector3(const geometry_msgs::msg::Vector3& point);
3267

33-
geometry_msgs::msg::Point Vector3dToRosPoint(const Eigen::Vector3d& point);
68+
geometry_msgs::msg::Vector3 Vector3ToRosVector3(const Eigen::Vector3d& point);
3469

35-
Eigen::Quaternion<double> RosQuatToQuat(
70+
// Orientation.
71+
72+
Eigen::Quaternion<double> RosQuaternionToQuaternion(
3673
const geometry_msgs::msg::Quaternion& quat);
3774

38-
geometry_msgs::msg::Quaternion QuatToRosQuat(
75+
geometry_msgs::msg::Quaternion QuaternionToRosQuaternion(
3976
const Eigen::Quaternion<double>& quat);
4077

41-
Eigen::Isometry3d RosPoseToIsometry3d(const geometry_msgs::msg::Pose& pose);
78+
drake::math::RotationMatrixd RosQuaternionToRotationMatrix(
79+
const geometry_msgs::msg::Quaternion& quat);
80+
81+
geometry_msgs::msg::Quaternion RotationMatrixToRosQuaternion(
82+
const drake::math::RotationMatrixd& rotation);
4283

43-
geometry_msgs::msg::Pose Isometry3dToRosPose(const Eigen::Isometry3d& isometry);
84+
// Pose.
4485

4586
drake::math::RigidTransformd RosPoseToRigidTransform(
4687
const geometry_msgs::msg::Pose& pose);
4788

4889
geometry_msgs::msg::Pose RigidTransformToRosPose(
4990
const drake::math::RigidTransformd& transform);
5091

51-
Eigen::Isometry3d RosTransformToIsometry3d(
52-
const geometry_msgs::msg::Transform& transform);
53-
54-
geometry_msgs::msg::Transform Isometry3dToRosTransform(
55-
const Eigen::Isometry3d& isometry);
56-
5792
drake::math::RigidTransformd RosTransformToRigidTransform(
5893
const geometry_msgs::msg::Transform& transform);
5994

6095
geometry_msgs::msg::Transform RigidTransformToRosTransform(
6196
const drake::math::RigidTransformd& transform);
6297

63-
drake::Vector6d RosTwistToVector6d(const geometry_msgs::msg::Twist& twist);
98+
Eigen::Isometry3d RosPoseToIsometry3(const geometry_msgs::msg::Pose& pose);
99+
100+
geometry_msgs::msg::Pose Isometry3ToRosPose(const Eigen::Isometry3d& isometry);
101+
102+
Eigen::Isometry3d RosTransformToIsometry3(
103+
const geometry_msgs::msg::Transform& transform);
104+
105+
geometry_msgs::msg::Transform Isometry3ToRosTransform(
106+
const Eigen::Isometry3d& isometry);
107+
108+
// Spatial Velocity.
109+
110+
drake::Vector6d RosTwistToVector6(const geometry_msgs::msg::Twist& twist);
64111

65-
geometry_msgs::msg::Twist Vector6dToRosTwist(const drake::Vector6d& vector);
112+
geometry_msgs::msg::Twist Vector6ToRosTwist(const drake::Vector6d& vector);
66113

67-
drake::multibody::SpatialVelocity<double> RosTwistToVelocity(
114+
drake::multibody::SpatialVelocity<double> RosTwistToSpatialVelocity(
68115
const geometry_msgs::msg::Twist& twist);
69116

70-
geometry_msgs::msg::Twist VelocityToRosTwist(
117+
geometry_msgs::msg::Twist SpatialVelocityToRosTwist(
71118
const drake::multibody::SpatialVelocity<double>& velocity);
72119

73-
drake::Vector6d RosAccelToVector6d(const geometry_msgs::msg::Accel& accel);
120+
// Spatial Acceleration.
74121

75-
geometry_msgs::msg::Accel Vector6dToRosAccel(const drake::Vector6d& vector);
122+
drake::Vector6d RosAccelerationToVector6(
123+
const geometry_msgs::msg::Accel& accel);
124+
125+
geometry_msgs::msg::Accel Vector6ToRosAcceleration(
126+
const drake::Vector6d& vector);
76127

77-
drake::multibody::SpatialAcceleration<double> RosAccelToAccel(
128+
drake::multibody::SpatialAcceleration<double> RosAccelerationToSpatialAcceleration(
78129
const geometry_msgs::msg::Accel& accel);
79130

80-
geometry_msgs::msg::Accel AccelToRosAccel(
131+
geometry_msgs::msg::Accel SpatialAccelerationToRosAcceleration(
81132
const drake::multibody::SpatialAcceleration<double>& accel);
82133

83-
drake::Vector6d RosWrenchToVector6d(const geometry_msgs::msg::Wrench& wrench);
134+
// Spatial Force.
135+
136+
drake::Vector6d RosWrenchToVector6(const geometry_msgs::msg::Wrench& wrench);
84137

85-
geometry_msgs::msg::Wrench Vector6dToRosWrench(const drake::Vector6d& vector);
138+
geometry_msgs::msg::Wrench Vector6ToRosWrench(const drake::Vector6d& vector);
86139

87-
drake::multibody::SpatialForce<double> RosWrenchToForce(
140+
drake::multibody::SpatialForce<double> RosWrenchToSpatialForce(
88141
const geometry_msgs::msg::Wrench& wrench);
89142

90-
geometry_msgs::msg::Wrench ForceToRosWrench(
143+
geometry_msgs::msg::Wrench SpatialForceToRosWrench(
91144
const drake::multibody::SpatialForce<double>& force);
92145

93146
} // namespace drake_ros_core

0 commit comments

Comments
 (0)