你好,
我正在尝试从使用 MAVROS 测量高度的距离传感器(Leddar One Range Finder)访问数据。 我可以使用 QGroundControl 查看数据(因为我的飞行控制器是 PX4)。
在无人机上(安装了 MAVROS),我尝试了以下命令:
$ roscore
$ rosrun mavros mavros_node _fcu_url:=tcp://127.0.0.1:5760 _system_id:=2
在此之后,我重复出现相同的错误:
DS: no mapping for sensor id: 0, type: 1, orientation: 25
我可以在 QGC 中检查 ID、类型和方向,这让我确定这是 Leddar One 传感器。
我从 px4_pluginlists.yaml 的黑名单中删除了 distance_sensor 和测距仪。
我还尝试更改 px4_config.yaml 文件中的 distance_sensor 信息,但没有成功(尝试了各种方向:PITCH_270、NONE 和 25)。
我发现错误是从以下代码的第 205 行生成的: distance_sensor.cpp但我无法弄清楚是什么导致了它。
我只是 ROS 的新手,因此将不胜感激任何帮助。
您是否在px4_config.yaml
上检查过它的配置? 如果不配置相应的参数来访问数据,将无法正确获取数据。 因此,您需要在 yaml 文件中为其添加一个 propper 映射(您已经在那里有示例)。 另外,将 sys_id 更改为 2 的任何原因? 您也不需要从黑名单中删除rangfinder
,因为它仅与 APM 兼容。
感谢您的快速回复并添加相关标签!
您能否更具体一点或将我指向需要更改的px4_config.yaml
区域? 我唯一改变的部分是距离传感器:(源代码中的第 133 行)
leddar1_pub:
id: 0
frame_id: "leddar1_laser"
orientation: PITCH_270 # RPY:{0.0, 270.0, 0.0} - downward-facing
field_of_view: 0.0 # XXX TODO
send_tf: true
sensor_position: {x: 0.0, y: 0.0, z: -0.1}
我从id: 1
起删除了其他传感器
由于我们使用的是 Intel Aero RTF 无人机,因此我按照此页面上的说明进行操作,其中包括将 sys_id 更改为 2。
没问题,我会把rangefinder
回黑名单。
我知道我可能要求太多了。 如果您知道有任何资源可以帮助我更正px4_config.yaml
而不是您需要解释它,那可能就足够了。
谢谢
我已经解决了我的问题。 我创建了一个启动文件,专门传入“px4_config.yaml”作为 config_yaml 参数。 该距离传感器正确初始化,并根据需要将数据发布到 ROS 主题。
此线程可能已关闭。
为了澄清起见,我不得不在“px4_pluginlists.yaml”中评论“- distance_sensor”以发布激光雷达数据。
最有用的评论
为了澄清起见,我不得不在“px4_pluginlists.yaml”中评论“- distance_sensor”以发布激光雷达数据。