CM_DOG/src/robot_bringup/launch/robot_bringup.launch.py
2025-04-09 02:50:36 +08:00

116 lines
3.8 KiB
Python

from launch import LaunchDescription
from launch_ros.actions import Node
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
def generate_launch_description():
# 定义 leg_ctrl 的四个容器节点
lf_container = ComposableNodeContainer(
name='lf_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_lf',
parameters=[{'serial_port': '/dev/ttyACM0'}],
remappings=[
('motor_cmds', 'LF/motor_cmds'),
('data_motors', 'LF/data_motors')
]
)
],
output='screen',
)
rf_container = ComposableNodeContainer(
name='rf_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_rf',
parameters=[{'serial_port': '/dev/ttyACM1'}],
remappings=[
('motor_cmds', 'RF/motor_cmds'),
('data_motors', 'RF/data_motors')
]
)
],
output='screen',
)
lr_container = ComposableNodeContainer(
name='lr_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_lr',
parameters=[{'serial_port': '/dev/ttyACM2'}],
remappings=[
('motor_cmds', 'LR/motor_cmds'),
('data_motors', 'LR/data_motors')
]
)
],
output='screen',
)
rr_container = ComposableNodeContainer(
name='rr_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_rr',
parameters=[{'serial_port': '/dev/ttyACM3'}],
remappings=[
('motor_cmds', 'RR/motor_cmds'),
('data_motors', 'RR/data_motors')
]
)
],
output='screen',
)
# 定义 ahrs_driver 节点
ahrs_driver = Node(
package="fdilink_ahrs",
executable="ahrs_driver_node",
parameters=[{
'if_debug_': False,
'serial_port_': '/dev/ttyUSB0',
'serial_baud_': 921600,
'imu_topic': '/imu',
'imu_frame_id_': 'gyro_link',
'mag_pose_2d_topic': '/mag_pose_2d',
'Magnetic_topic': '/magnetic',
'Euler_angles_topic': '/euler_angles',
'gps_topic': '/gps/fix',
'twist_topic': '/system_speed',
'NED_odom_topic': '/NED_odometry',
'device_type_': 1
}],
output="screen"
)
# 返回主启动文件的描述
return LaunchDescription([
lf_container,
rf_container,
lr_container,
rr_container,
ahrs_driver
])