1
0
forked from zbw/yiliao2026

add:添加了实车模式,未验证

This commit is contained in:
陌欢醉
2026-06-06 20:32:07 +08:00
parent 30a9b2bd2d
commit b44f0c1909
71 changed files with 6113 additions and 5 deletions

View File

@@ -0,0 +1,47 @@
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch.conditions import IfCondition, UnlessCondition
import launch_ros.actions
def generate_launch_description():
akmcar = LaunchConfiguration('akmcar', default='false')
robot_parameters = [
{'usart_port_name': '/dev/ttyACM0',
'serial_baud_rate': 115200,
'robot_frame_id': 'base_link',
'odom_frame_id': 'odom',
'cmd_vel': 'cmd_vel',
'product_number': 0}
]
return LaunchDescription([
DeclareLaunchArgument(
'akmcar',
default_value='false',
description='Use simulation (Gazebo) clock if true'
),
launch_ros.actions.Node(
condition=IfCondition(akmcar),
package='origincar_base',
executable='origincar_base_node',
parameters=robot_parameters + [{'akm_cmd_vel': 'ackermann_cmd'}],
remappings=[('/cmd_vel', 'cmd_vel')],
),
launch_ros.actions.Node(
condition=IfCondition(akmcar),
package='origincar_base',
executable='cmd_vel_to_ackermann_drive.py',
name='cmd_vel_to_ackermann_drive',
),
launch_ros.actions.Node(
condition=UnlessCondition(akmcar),
package='origincar_base',
executable='origincar_base_node',
parameters=robot_parameters + [{'akm_cmd_vel': 'none'}],
)
])

View File

@@ -0,0 +1,33 @@
#!/usr/bin/python3
import os
import launch
import launch_ros
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
def generate_launch_description():
package_name = 'origincar_base'
ld = launch.LaunchDescription()
pkg_share = launch_ros.substitutions.FindPackageShare(package=package_name).find(package_name)
robot_localization_file_path = os.path.join(pkg_share, 'config/ekf.yaml')
use_sim_time = LaunchConfiguration('use_sim_time')
# Start robot localization using an Extended Kalman filter
robot_localization_node = Node(
package='robot_localization',
executable='ekf_node',
name='ekf_filter_node',
output='screen',
remappings=[("odometry/filtered", "odom_combined")],
parameters=[
robot_localization_file_path,
{'use_sim_time': use_sim_time}
])
ld.add_action(launch.actions.DeclareLaunchArgument(name='use_sim_time', default_value='false',
description='Flag to disable use_sim_time'))
ld.add_action(robot_localization_node)
return ld

View File

@@ -0,0 +1,95 @@
import os
from pathlib import Path
import launch
from launch.actions import SetEnvironmentVariable
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import (DeclareLaunchArgument, GroupAction,
IncludeLaunchDescription, SetEnvironmentVariable)
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration, PythonExpression
from launch_ros.actions import PushRosNamespace
import launch_ros.actions
from launch.conditions import UnlessCondition
def generate_launch_description():
# Get the launch directory
bringup_dir = get_package_share_directory('origincar_base')
launch_dir = os.path.join(bringup_dir, 'launch')
ekf_config = Path(get_package_share_directory('origincar_base'), 'config', 'ekf.yaml')
imu_config = Path(get_package_share_directory('origincar_base'), 'config', 'imu.yaml')
carto_slam = LaunchConfiguration('carto_slam', default='false')
carto_slam_dec = DeclareLaunchArgument('carto_slam',default_value='false')
akmcar = LaunchConfiguration('akmcar', default='true')
akmcar_dec = DeclareLaunchArgument('akmcar', default_value='true',
description='阿克曼底盘模式 (true=阿克曼, false=差速)')
origincar_base = IncludeLaunchDescription(
PythonLaunchDescriptionSource(os.path.join(launch_dir, 'base_serial.launch.py')),
launch_arguments={'akmcar': akmcar}.items(),
)
choose_car = IncludeLaunchDescription(
PythonLaunchDescriptionSource(os.path.join(launch_dir, 'robot_mode_description.launch.py')),
)
base_to_link = launch_ros.actions.Node(
package='tf2_ros',
executable='static_transform_publisher',
name='base_to_link',
arguments=['0', '0', '0','0', '0','0','base_footprint','base_link'],#arguments=['0.41', '0.12', '0','0', '0','0','base_footprint','base_link'],
)
base_to_gyro = launch_ros.actions.Node(
package='tf2_ros',
executable='static_transform_publisher',
name='base_to_gyro',
arguments=['0', '0', '0','0', '0','0','base_footprint','gyro_link'],
)
link_to_laser = launch_ros.actions.Node(
package='tf2_ros',
executable='static_transform_publisher',
name='link_to_laser',
arguments=['0', '0', '0','0', '0','0','base_link','laser'],
)
imu_filter_node = launch_ros.actions.Node(
package='imu_filter_madgwick',
executable='imu_filter_madgwick_node',
parameters=[imu_config]
)
robot_ekf = launch_ros.actions.Node(
condition=UnlessCondition(carto_slam),
package='robot_localization',
executable='ekf_node',
parameters=[ekf_config],
remappings=[("odometry/filtered", "odom_combined")]
)
joint_state_publisher_node = launch_ros.actions.Node(
package='joint_state_publisher',
executable='joint_state_publisher',
name='joint_state_publisher',
)
ld = LaunchDescription()
ld.add_action(carto_slam_dec)
ld.add_action(akmcar_dec)
ld.add_action(origincar_base)
ld.add_action(base_to_link)
ld.add_action(base_to_gyro)
ld.add_action(joint_state_publisher_node)
ld.add_action(choose_car)
ld.add_action(imu_filter_node)
ld.add_action(robot_ekf)
return ld

View File

@@ -0,0 +1,24 @@
import os
from pathlib import Path
import launch_ros.actions
import launch
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import (DeclareLaunchArgument, GroupAction,LogInfo,
IncludeLaunchDescription, SetEnvironmentVariable)
from launch.substitutions import LaunchConfiguration
def generate_launch_description():
origincar_description = GroupAction([
launch_ros.actions.Node(
package='robot_state_publisher',
executable='robot_state_publisher',
name='robot_state_publisher',
arguments=[os.path.join(get_package_share_directory('origincar_description'),'urdf','origincar.urdf')]
)
])
ld = LaunchDescription()
ld.add_action(origincar_description)
return ld