116 lines
3.8 KiB
Python
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
|
|
]) |