sudo apt install -y ros-humble-rosidl-default-generators ros-humble-rosidl-default-runtime
/home/ubuntu/rosidl/msg/Num.msg:
# Num.msgint64 numstring name
首先使用rosidl工具将msg文件转成idl文件:
cd /home/ubuntu/opt/ros/humble/bin/rosidl translate --to idl my_manual_msg msg/Num.msg
/home/ubuntu/rosidl/generator_arguments.json
{"package_name": "my_manual_msg","output_dir": "/home/ubuntu/rosidl","template_dir": "/opt/ros/humble/share/rosidl_generator_c/resource","idl_tuples": ["/home/ubuntu/rosidl:msg/Num.idl"],"ros_interface_dependencies": ["std_msgs:/opt/ros/humble/share/std_msgs/msg/Bool.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Byte.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/ByteMultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Char.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/ColorRGBA.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Empty.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Float32.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Float32MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Float64.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Float64MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Header.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int16.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int16MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int32.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int32MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int64.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int64MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int8.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/Int8MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/MultiArrayDimension.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/MultiArrayLayout.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/String.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt16.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt16MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt32.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt32MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt64.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt64MultiArray.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt8.idl","std_msgs:/opt/ros/humble/share/std_msgs/msg/UInt8MultiArray.idl","builtin_interfaces:/opt/ros/humble/share/builtin_interfaces/msg/Duration.idl","builtin_interfaces:/opt/ros/humble/share/builtin_interfaces/msg/Time.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Accel.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/AccelStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/AccelWithCovariance.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/AccelWithCovarianceStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Inertia.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/InertiaStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Point.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Point32.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PointStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Polygon.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PolygonStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Pose.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Pose2D.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PoseArray.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PoseStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PoseWithCovariance.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/PoseWithCovarianceStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Vector3.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Vector3Stamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/VelocityStamped.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/Wrench.idl","geometry_msgs:/opt/ros/humble/share/geometry_msgs/msg/WrenchStamped.idl"],"target_dependencies": ["/opt/ros/humble/lib/rosidl_typesupport_c/rosidl_typesupport_c","/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_typesupport_c/__init__.py","/opt/ros/humble/share/rosidl_typesupport_c/resource/action__type_support.c.em","/opt/ros/humble/share/rosidl_typesupport_c/resource/idl__type_support.cpp.em","/opt/ros/humble/share/rosidl_typesupport_c/resource/msg__type_support.cpp.em","/opt/ros/humble/share/rosidl_typesupport_c/resource/srv__type_support.cpp.em","/home/ubuntu/rosidl/msg/Num.idl","/opt/ros/humble/share/std_msgs/msg/Bool.idl","/opt/ros/humble/share/std_msgs/msg/Byte.idl","/opt/ros/humble/share/std_msgs/msg/ByteMultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Char.idl","/opt/ros/humble/share/std_msgs/msg/ColorRGBA.idl","/opt/ros/humble/share/std_msgs/msg/Empty.idl","/opt/ros/humble/share/std_msgs/msg/Float32.idl","/opt/ros/humble/share/std_msgs/msg/Float32MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Float64.idl","/opt/ros/humble/share/std_msgs/msg/Float64MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Header.idl","/opt/ros/humble/share/std_msgs/msg/Int16.idl","/opt/ros/humble/share/std_msgs/msg/Int16MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Int32.idl","/opt/ros/humble/share/std_msgs/msg/Int32MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Int64.idl","/opt/ros/humble/share/std_msgs/msg/Int64MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/Int8.idl","/opt/ros/humble/share/std_msgs/msg/Int8MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/MultiArrayDimension.idl","/opt/ros/humble/share/std_msgs/msg/MultiArrayLayout.idl","/opt/ros/humble/share/std_msgs/msg/String.idl","/opt/ros/humble/share/std_msgs/msg/UInt16.idl","/opt/ros/humble/share/std_msgs/msg/UInt16MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/UInt32.idl","/opt/ros/humble/share/std_msgs/msg/UInt32MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/UInt64.idl","/opt/ros/humble/share/std_msgs/msg/UInt64MultiArray.idl","/opt/ros/humble/share/std_msgs/msg/UInt8.idl","/opt/ros/humble/share/std_msgs/msg/UInt8MultiArray.idl","/opt/ros/humble/share/builtin_interfaces/msg/Duration.idl","/opt/ros/humble/share/builtin_interfaces/msg/Time.idl","/opt/ros/humble/share/geometry_msgs/msg/Accel.idl","/opt/ros/humble/share/geometry_msgs/msg/AccelStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/AccelWithCovariance.idl","/opt/ros/humble/share/geometry_msgs/msg/AccelWithCovarianceStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Inertia.idl","/opt/ros/humble/share/geometry_msgs/msg/InertiaStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Point.idl","/opt/ros/humble/share/geometry_msgs/msg/Point32.idl","/opt/ros/humble/share/geometry_msgs/msg/PointStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Polygon.idl","/opt/ros/humble/share/geometry_msgs/msg/PolygonStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Pose.idl","/opt/ros/humble/share/geometry_msgs/msg/Pose2D.idl","/opt/ros/humble/share/geometry_msgs/msg/PoseArray.idl","/opt/ros/humble/share/geometry_msgs/msg/PoseStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/PoseWithCovariance.idl","/opt/ros/humble/share/geometry_msgs/msg/PoseWithCovarianceStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Quaternion.idl","/opt/ros/humble/share/geometry_msgs/msg/QuaternionStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Transform.idl","/opt/ros/humble/share/geometry_msgs/msg/TransformStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Twist.idl","/opt/ros/humble/share/geometry_msgs/msg/TwistStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/TwistWithCovariance.idl","/opt/ros/humble/share/geometry_msgs/msg/TwistWithCovarianceStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Vector3.idl","/opt/ros/humble/share/geometry_msgs/msg/Vector3Stamped.idl","/opt/ros/humble/share/geometry_msgs/msg/VelocityStamped.idl","/opt/ros/humble/share/geometry_msgs/msg/Wrench.idl","/opt/ros/humble/share/geometry_msgs/msg/WrenchStamped.idl"]}
然后使用rosidl_generator_c工具将idl文件转成c语言头文件:
/opt/ros/humble/lib/rosidl_generator_c/rosidl_generator_c --generator-arguments-file generator_arguments.json
然后使用rosidl_generator_c工具将idl文件转成c语言头文件:
首先将上面的json文件改成:
{..."template_dir": "/opt/ros/humble/share/rosidl_generator_cpp/resource",...}
然后
/opt/ros/humble/lib/rosidl_generator_cpp/rosidl_generator_cpp --generator-arguments-file generator_arguments.json