我试图为Ublox GPS传感器制作一个发布者,但是我得到了这个ROS错误:
ubuntu@fieldrover:~/field-rover-gps/gps/gps_pkg$ cd ~/野战车-gps/gps/gps_pkg/ && colcon建&&。安装/设置,ros2 && ros2运行gps_pkg gps 启动>>> gps_pkg完成<<< gps_pkg 2.98s 摘要:一个软件包完成了3.49s的回溯(最近一次调用):文件"/opt/ros/galactic/lib/python3.8/site-packages/rosidl_generator_py/import_type_support_impl.py",第46行,import_type_support返回importlib.import_module(module_name,package=pkg_name)文件第127行,import_module返回_bootstrap._gcd_import(namelevel:,package,level)文件"",第1014行,在_gcd_import文件“”中,第991行,在“_find_and_load文件”中,第975行,在_find_and_load_unlocked文件中"",第657行,在_load_unlocked中 module_from_spec中的文件"",第556行 文件"",第1166行,在create_module文件"",第219行,在_call_with_frames_removed ImportError:_call_with_frames_removed未定义符号: std_msgs__msg__Header__copy 在处理上述异常的过程中,发生了另一个异常: 回溯(最近一次调用):文件"/home/ubuntu/field-rover-gps/gps/gps_pkg/install/gps_pkg/lib/gps_pkg/gps",第33行,在sys.exit(load_entry_point(‘load_entry_point-pkg==0.0.0’),‘控制台_脚本’,‘gps’)()文件"/home/ubuntu/field-rover-gps/gps/gps_pkg/install/gps_pkg/lib/python3.8/site-packages/gps_pkg/gps.py",行49,在main "/home/ubuntu/field-rover-gps/gps/gps_pkg/install/gps_pkg/lib/python3.8/site-packages/gps_pkg/gps.py",= GpsNode() File gps_node第17行中,在init self.publisher_ = self.create_publisher(NavSatFix,'gps/fix‘)中,文件"/opt/ros/galactic/lib/python3.8/site-packages/rclpy/node.py",第1282行在"/opt/ros/galactic/lib/python3.8/site-packages/rclpy/type_support.py",check_is_valid_msg_type(msg_type)文件第35行中,在check_is_valid_msg_type check_for_type_support(msg_type)文件第29行中,在msg_or_srv_type.class.import_type_support()文件"/opt/ros/galactic/lib/python3.8/site-packages/sensor_msgs/msg/_nav_sat_fix.py",第34行中,在import_type_support模块= import_type_support( 'sensor_msgs‘)文件"/opt/ros/galactic/lib/python3.8/site-packages/rosidl_generator_py/import_type_support_impl.py",第48行中,在import_type_support raise (Pkg_name)中,rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport:无法为包“sensor_msgs”导入'rosidl_typesupport_c’
它似乎与NavSatFix有问题。我在同一个包中测试了其他sensor_msgs类型,比如图像,这很好。这是我试着运行的代码。
import rclpy
import os
from rclpy.node import Node
from sensor_msgs.msg import NavSatFix
from sensor_msgs.msg import NavSatStatus
from std_msgs.msg import Header
import serial
from ublox_gps import UbloxGps
port = serial.Serial('/dev/ttyACM0', baudrate=38400, timeout=1)
gps = UbloxGps(port)
class GpsNode(Node):
def __init__(self):
super().__init__('gps_node')
self.publisher_ = self.create_publisher(NavSatFix, 'gps/fix', 10)
timer_period = 0.5 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
def timer_callback(self):
msg = NavSatFix()
msg.header = Header()
msg.header.stamp = self.get_clock().now().to_msg()
msg.header.frame_id = "gps"
msg.status.status = NavSatStatus.STATUS_FIX
msg.status.service = NavSatStatus.SERVICE_GPS
geo = gps.geo_coords()
# Position in degrees.
msg.latitude = geo.lat
msg.longitude = geo.lon
# Altitude in metres.
#msg.altitude = 1.15
msg.position_covariance[0] = 0
msg.position_covariance[4] = 0
msg.position_covariance[8] = 0
msg.position_covariance_type = NavSatFix.COVARIANCE_TYPE_DIAGONAL_KNOWN
self.publisher_.publish(msg)
self.best_pos_a = None
def main(args=None):
rclpy.init(args=args)
gps_node = GpsNode()
rclpy.spin(gps_node)
# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
gps_node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()发布于 2022-06-21 18:23:21
最后只使用了nmea_navsat_driver found 这里
发布于 2022-11-04 13:17:49
我也犯了同样的错误,忘记添加我在CMakeLists.txt服务中使用的消息类型的依赖项,rosidl_generate_interfaces中缺少该依赖项。
https://stackoverflow.com/questions/72452208
复制相似问题