在寻找解决方案时,我在此How to launch a node with a parameter in ROS2?上遇到了ROS2晶体的解决方案。
不幸的是,在ROS2破折号下这似乎不起作用。我创建了ROS2 realsense驱动程序(https://github.com/AndreasAZiegler/ros2_intel_realsense/tree/serial_no_param/realsense_ros2_camera)的派生文件,我的目标是能够通过参数传递序列号。与
Sub Test()
Dim WorkRng As Range
Dim OutRng As Range
Dim Rng As Range
'On Error Resume Next
'Set WorkRng = Application.ActiveSheet.UsedRange
Set WorkRng = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column))
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rng.Locked = False Then
'If OutRng.Count = 0 Then
If OutRng Is Nothing Then
Set OutRng = Rng
Else
Set OutRng = Union(OutRng, Rng)
End If
End If
Next
If OutRng.Count > 0 Then OutRng.Select
Application.ScreenUpdating = True
End Sub
传递参数可以正常工作,但是当我使用启动python文件启动节点时
ros2 run realsense_ros2_camera realsense_ros2_camera __params:=/paht/to/config/parameters.yaml
它忽略该参数。 parameters.yaml的路径正确(我在启动python脚本中将其打印出来)。
答案 0 :(得分:1)
在启动文件中,将节点名称更改为:node_name='realsense_ros2_camera'
但是,节点的默认名称以及您在配置文件中使用的名称都是RealSenseCameraNode
,这就是为什么当您从cmd行运行它(不传递新名称)时它可以工作的原因。
# RealSense parameters
---
RealSenseCameraNode_ns:
RealSenseCameraNode:
ros__parameters:
serial_no: 845112070204
将其更改为
# RealSense parameters
---
RealSenseCameraNode_ns:
realsense_ros2_camera:
ros__parameters:
serial_no: 845112070204
它应该可以工作(或在启动文件中保留默认名称)。次要事情:我将yaml配置更改为每个新行仅2个空格,不确定是否重要。