with '#' will be ignored, and an empty message aborts the commit. On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) Changes to be committed: modified: .gitignore modified: README.md new file: bashes/auto-wifi-connect.service new file: bashes/auto-wifi-connect.sh deleted: keyboard_control.py new file: my_model/image.png new file: path_follower_demo.py new file: scripts/PIDtracking.py new file: scripts/__pycache__/publish_sine_path.cpython-310.pyc new file: scripts/publish_sine_path.py modified: src/gc_navigation2_slamtoolbox/params/gc_navigation_slam.yaml modified: src/gc_navigation2_slamtoolbox/params/gc_navigation_slam.yaml.bak new file: src/gc_navigation2_slamtoolbox/params/gc_navigation_slam.yaml.bak2 modified: src/origincar_base/config/ekf.yaml new file: src/origincar_base/config/ekf.yaml.bak modified: src/origincar_base/launch/base_serial.launch.py new file: src/origincar_base/launch/base_serial.launch.py.bak modified: src/origincar_base/launch/origincar_bringup.launch.py new file: src/past_control/CMakeLists.txt new file: src/past_control/config/past_control.yaml new file: src/past_control/include/past_control/tools.h new file: src/past_control/launch/past_control.launch.py new file: src/past_control/msg/Obstacle.msg new file: src/past_control/msg/ObstacleArray.msg new file: src/past_control/package.xml new file: src/past_control/src/lane_follower_node.cpp new file: src/past_control/src/obstacle_detector_node.cpp new file: src/past_control/src/racing_orchestrator.cpp new file: src/planner/CMakeLists.txt new file: src/planner/config/planner.yaml new file: src/planner/launch/planner.launch.py new file: src/planner/package.xml new file: src/planner/src/planner_version.cpp modified: src/qr_detection/src/qr_dete_depth.cpp new file: src/racing_control/CMakeLists.txt new file: src/racing_control/include/racing_control/racing_control.hpp new file: src/racing_control/package.xml new file: src/racing_control/src/racing_control.cpp modified: src/vlm_detect/setup.py new file: src/vlm_detect/vlm_detect/__pycache__/__init__.cpython-310.pyc new file: src/vlm_detect/vlm_detect/__pycache__/tts_node.cpython-310.pyc new file: src/vlm_detect/vlm_detect/test_publisher.py new file: src/vlm_detect/vlm_detect/tts_node.py modified: src/vlm_detect/vlm_detect/vlm_node.py new file: tools/measure_turning_radius.py new file: tools/set_volume.py new file: tools/udp_to_cmdvel.py new file: tools/windows_keyboard_control.py new file: vlm_server.py new file: "\350\260\203\350\257\225\350\256\260\345\275\225.Assets/1.png" renamed: "\350\260\203\350\257\225\350\256\260\345\275\225.log" -> "\350\260\203\350\257\225\350\256\260\345\275\225.md"
100 lines
3.6 KiB
Python
100 lines
3.6 KiB
Python
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='false')
|
||
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_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")]
|
||
)
|
||
|
||
# 从 URDF 生成 robot_description,供 joint_state_publisher 和 robot_state_publisher 共用
|
||
from launch_ros.parameter_descriptions import ParameterValue
|
||
from launch.substitutions import Command
|
||
|
||
robot_description = ParameterValue(
|
||
Command(['xacro ', os.path.join(
|
||
get_package_share_directory('origincar_description'),
|
||
'urdf', 'origincar.urdf')]),
|
||
value_type=str)
|
||
|
||
joint_state_publisher_node = launch_ros.actions.Node(
|
||
package='joint_state_publisher',
|
||
executable='joint_state_publisher',
|
||
name='joint_state_publisher',
|
||
parameters=[{'robot_description': robot_description}],
|
||
)
|
||
|
||
ld = LaunchDescription()
|
||
|
||
ld.add_action(carto_slam_dec)
|
||
ld.add_action(akmcar_dec)
|
||
ld.add_action(origincar_base)
|
||
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
|
||
|