112 lines
3.5 KiB
Python
112 lines
3.5 KiB
Python
from launch import LaunchDescription
|
||
from launch_ros.actions import Node
|
||
from launch.actions import DeclareLaunchArgument
|
||
from launch.substitutions import LaunchConfiguration
|
||
|
||
|
||
def generate_launch_description():
|
||
# 声明启动参数 - 基本设置
|
||
send_frequency_arg = DeclareLaunchArgument(
|
||
'send_frequency',
|
||
default_value='50.0',
|
||
description='CAN 发送频率 (Hz)'
|
||
)
|
||
|
||
tx_channel_arg = DeclareLaunchArgument(
|
||
'tx_channel',
|
||
default_value='0',
|
||
description='CAN 发送通道 (0 或 1)'
|
||
)
|
||
|
||
rx_channel_arg = DeclareLaunchArgument(
|
||
'rx_channel',
|
||
default_value='1',
|
||
description='CAN 接收通道 (0 或 1)'
|
||
)
|
||
|
||
# 声明启动参数 - CAN ID 设置
|
||
can_id_motion_arg = DeclareLaunchArgument(
|
||
'can_id_motion',
|
||
default_value='329', # 0x149 = 329
|
||
description='运动控制 CAN ID (十进制,默认 0x149=329)'
|
||
)
|
||
|
||
can_id_attack_arg = DeclareLaunchArgument(
|
||
'can_id_attack',
|
||
default_value='393', # 0x189 = 393
|
||
description='攻击控制 CAN ID (十进制,默认 0x189=393)'
|
||
)
|
||
|
||
# 声明启动参数 - CAN 帧格式
|
||
use_extended_frame_arg = DeclareLaunchArgument(
|
||
'use_extended_frame',
|
||
default_value='false',
|
||
description='是否使用扩展帧(29位ID),false=标准帧(11位)'
|
||
)
|
||
|
||
use_canfd_arg = DeclareLaunchArgument(
|
||
'use_canfd',
|
||
default_value='false',
|
||
description='是否使用 CANFD,false=CAN2.0'
|
||
)
|
||
|
||
use_brs_arg = DeclareLaunchArgument(
|
||
'use_brs',
|
||
default_value='false',
|
||
description='CANFD 是否启用波特率切换(BRS)'
|
||
)
|
||
|
||
# 声明启动参数 - 接收过滤
|
||
rx_filter_enabled_arg = DeclareLaunchArgument(
|
||
'rx_filter_enabled',
|
||
default_value='false',
|
||
description='是否启用接收 ID 过滤'
|
||
)
|
||
|
||
rx_filter_id_min_arg = DeclareLaunchArgument(
|
||
'rx_filter_id_min',
|
||
default_value='0',
|
||
description='接收过滤 ID 最小值'
|
||
)
|
||
|
||
rx_filter_id_max_arg = DeclareLaunchArgument(
|
||
'rx_filter_id_max',
|
||
default_value='2047', # 0x7FF
|
||
description='接收过滤 ID 最大值'
|
||
)
|
||
|
||
# 创建节点
|
||
transmitter_test_node = Node(
|
||
package='amadeus_26',
|
||
executable='transmitter_test_node',
|
||
name='transmitter_test_node',
|
||
output='screen',
|
||
parameters=[{
|
||
'send_frequency': LaunchConfiguration('send_frequency'),
|
||
'tx_channel': LaunchConfiguration('tx_channel'),
|
||
'rx_channel': LaunchConfiguration('rx_channel'),
|
||
'can_id_motion': LaunchConfiguration('can_id_motion'),
|
||
'can_id_attack': LaunchConfiguration('can_id_attack'),
|
||
'use_extended_frame': LaunchConfiguration('use_extended_frame'),
|
||
'use_canfd': LaunchConfiguration('use_canfd'),
|
||
'use_brs': LaunchConfiguration('use_brs'),
|
||
'rx_filter_enabled': LaunchConfiguration('rx_filter_enabled'),
|
||
'rx_filter_id_min': LaunchConfiguration('rx_filter_id_min'),
|
||
'rx_filter_id_max': LaunchConfiguration('rx_filter_id_max'),
|
||
}],
|
||
)
|
||
|
||
return LaunchDescription([
|
||
send_frequency_arg,
|
||
tx_channel_arg,
|
||
rx_channel_arg,
|
||
can_id_motion_arg,
|
||
can_id_attack_arg,
|
||
use_extended_frame_arg,
|
||
use_canfd_arg,
|
||
use_brs_arg,
|
||
rx_filter_enabled_arg,
|
||
rx_filter_id_min_arg,
|
||
rx_filter_id_max_arg,
|
||
transmitter_test_node,
|
||
]) |