"""ROS 2 Python package setup for UAV-UGV Simulation.""" from setuptools import setup, find_packages import os from glob import glob package_name = 'uav_ugv_simulation' setup( name=package_name, version='1.0.0', packages=find_packages(exclude=['tests']), data_files=[ # Package resource index ('share/ament_index/resource_index/packages', ['resource/' + package_name]), # Package.xml ('share/' + package_name, ['package.xml']), # Launch files (os.path.join('share', package_name, 'launch'), glob('launch/*.py')), (os.path.join('share', package_name, 'launch', 'utils'), glob('launch/utils/*.py')), # Config files (os.path.join('share', package_name, 'config'), glob('config/*.yaml') + glob('config/*.parm')), # World files (os.path.join('share', package_name, 'worlds'), glob('worlds/*.world')), # Model files (os.path.join('share', package_name, 'models', 'iris_with_camera'), glob('models/iris_with_camera/*')), (os.path.join('share', package_name, 'models', 'iris_with_sensors'), glob('models/iris_with_sensors/*')), (os.path.join('share', package_name, 'models', 'custom_ugv'), glob('models/custom_ugv/*')), # Scripts (os.path.join('share', package_name, 'scripts'), glob('scripts/*.sh')), ], install_requires=['setuptools'], zip_safe=True, maintainer='Developer', maintainer_email='developer@example.com', description='UAV-UGV Gazebo SITL Simulation with GPS-Denied Navigation', license='MIT', tests_require=['pytest'], entry_points={ 'console_scripts': [ # Vision nodes 'visual_odom_node = src.nodes.visual_odom_node:main', 'camera_processor = src.vision.camera_processor:main', 'optical_flow_node = src.vision.optical_flow:main', # Localization nodes 'position_estimator = src.localization.position_estimator:main', 'ekf_fusion_node = src.localization.ekf_fusion:main', # Navigation nodes 'vision_nav_node = src.nodes.vision_nav_node:main', 'local_planner = src.navigation.local_planner:main', 'waypoint_follower = src.navigation.waypoint_follower:main', # Control nodes 'uav_controller = src.control.uav_controller:main', 'ugv_controller = src.control.ugv_controller:main', 'mission_planner = src.control.mission_planner:main', # Safety nodes 'geofence_node = src.nodes.geofence_node:main', 'failsafe_handler = src.safety.failsafe_handler:main', # Coordination 'multi_vehicle_coord = src.nodes.multi_vehicle_coord:main', ], }, )