64da9fd848
- Wrap rclpy.shutdown() in try/except across all nodes to avoid "rcl_shutdown already called" errors when launched via ros2 launch. - Replace web_node's server.shutdown() with server_close() to prevent the HTTP server from hanging on SIGINT (shutdown() waits on an event only set by serve_forever, which the timer-based approach doesn't use). - Set rosbridge_websocket default_call_service_timeout=5.0, call_services_in_new_thread=True, send_action_goals_in_new_thread=True to match upcoming Jazzy defaults and silence startup warnings.