sample_tag和filter

本文探讨了模板语言中过滤器的功能与用法,并通过一个具体的Python示例展示了如何定义和使用过滤器来处理变量值。同时介绍了在模板中如何应用这些过滤器进行条件判断。

共同点:

都可以传送参数

filter:

限制:传参

支持:模板语言中的if语句

代码如下   {% if k1|f3 %}
            <h1>True</h1>
        {% else %}
             <h1>False</h1>
    {% endif %}


python:


@register.filter
def f3(value):
    if value=="VVV":
        return True
    else:
        return False

sample_tag:

它使用则会报错

zy@zy-Lenovo-Legion-R7000P2020H:~/autoware$ colcon build --symlink-install \ --cmake-args \ -DCMAKE_BUILD_TYPE=Release \ -DCUDAToolkit_ROOT=/usr/local/cuda-12.4 \ -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.4/bin/nvcc \ --continue-on-error \ --allow-overriding can_msgs Starting >>> autoware_lint_common Starting >>> autoware_planning_msgs Starting >>> autoware_simple_object_merger --- stderr: autoware_probabilistic_occupancy_grid_map In this package, headers install destination is set to `include` by ament_auto_package. It is recommended to install `include/autoware_probabilistic_occupancy_grid_map` instead and will be the default behavior of ament_auto_package from ROS 2 Kilted Kaiju. On distributions before Kilted, ament_auto_package behaves the same way when you use USE_SCOPED_HEADER_INSTALL_DIR option. CMake Warning: Manually-specified variables were not used by the project: CMAKE_CUDA_COMPILER CUDAToolkit_ROOT /usr/bin/ccache: invalid option -- 'E' nvcc fatal : Failed to preprocess host compiler properties. CMake Error at autoware_probabilistic_occupancy_grid_map_cuda_generated_utils_kernel.cu.o.Release.cmake:220 (message): Error generating /home/zy/autoware/build/autoware_probabilistic_occupancy_grid_map/CMakeFiles/autoware_probabilistic_occupancy_grid_map_cuda.dir/lib/utils/./autoware_probabilistic_occupancy_grid_map_cuda_generated_utils_kernel.cu.o gmake[2]: *** [CMakeFiles/autoware_probabilistic_occupancy_grid_map_cuda.dir/build.make:105:CMakeFiles/autoware_probabilistic_occupancy_grid_map_cuda.dir/lib/utils/autoware_probabilistic_occupancy_grid_map_cuda_generated_utils_kernel.cu.o] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:150:CMakeFiles/autoware_probabilistic_occupancy_grid_map_cuda.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< autoware_probabilistic_occupancy_grid_map [29.1s, exited with code 2] Starting >>> autoware_pid_longitudinal_controller --- stderr: autoware_lidar_transfusion In this package, headers install destination is set to `include` by ament_auto_package. It is recommended to install `include/autoware_lidar_transfusion` instead and will be the default behavior of ament_auto_package from ROS 2 Kilted Kaiju. On distributions before Kilted, ament_auto_package behaves the same way when you use USE_SCOPED_HEADER_INSTALL_DIR option. sh: 1: cicc: not found CMake Error at autoware_lidar_transfusion_cuda_lib_generated_preprocess_kernel.cu.o.Release.cmake:280 (message): Error generating file /home/zy/autoware/build/autoware_lidar_transfusion/CMakeFiles/autoware_lidar_transfusion_cuda_lib.dir/lib/preprocess/./autoware_lidar_transfusion_cuda_lib_generated_preprocess_kernel.cu.o gmake[2]: *** [CMakeFiles/autoware_lidar_transfusion_cuda_lib.dir/build.make:411:CMakeFiles/autoware_lidar_transfusion_cuda_lib.dir/lib/preprocess/autoware_lidar_transfusion_cuda_lib_generated_preprocess_kernel.cu.o] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:192:CMakeFiles/autoware_lidar_transfusion_cuda_lib.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< autoware_lidar_transfusion [34.7s, exited with code 2] Starting >>> autoware_pure_pursuit --- stderr: autoware_planning_validator In this package, headers install destination is set to `include` by ament_auto_package. It is recommended to install `include/autoware_planning_validator` instead and will be the default behavior of ament_auto_package from ROS 2 Kilted Kaiju. On distributions before Kilted, ament_auto_package behaves the same way when you use USE_SCOPED_HEADER_INSTALL_DIR option. CMake Warning: Manually-specified variables were not used by the project: CMAKE_CUDA_COMPILER CUDAToolkit_ROOT /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkValidFiniteValueFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0xa4): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xf0): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidFiniteValue(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x120): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidFiniteValue(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x153): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidFiniteValue(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkValidIntervalFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0x4f9): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x549): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidInterval(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x59b): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidInterval(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x5e0): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidInterval(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x638): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidInterval(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkValidCurvatureFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0xb24): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xb70): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidCurvature(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkValidRelativeAngleFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0xde7): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xe64): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidRelativeAngle(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xec5): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidRelativeAngle(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xf28): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidRelativeAngle(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0xfef): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidRelativeAngle(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkValidLateralJerkFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0x14b9): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x150a): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidLateralJerk(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x15ea): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidLateralJerk(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x1662): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidLateralJerk(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x17f5): undefined reference to `autoware::planning_validator::PlanningValidator::checkValidLateralJerk(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_functions.cpp.o: in function `PlanningValidatorTestSuite_checkTrajectoryShiftFunction_Test::TestBody()': test_planning_validator_functions.cpp:(.text+0x1d2b): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x1dda): undefined reference to `autoware::planning_validator::PlanningValidator::checkTrajectoryShift(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, geometry_msgs::msg::Pose_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x1e2a): undefined reference to `autoware::planning_validator::PlanningValidator::checkTrajectoryShift(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, geometry_msgs::msg::Pose_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x1e77): undefined reference to `autoware::planning_validator::PlanningValidator::checkTrajectoryShift(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, geometry_msgs::msg::Pose_<std::allocator<void> > const&)' /usr/bin/ld: test_planning_validator_functions.cpp:(.text+0x1ec6): undefined reference to `autoware::planning_validator::PlanningValidator::checkTrajectoryShift(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, geometry_msgs::msg::Pose_<std::allocator<void> > const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_pubsub.cpp.o: in function `prepareTest(autoware_planning_msgs::msg::Trajectory_<std::allocator<void> > const&, nav_msgs::msg::Odometry_<std::allocator<void> > const&, geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)': test_planning_validator_pubsub.cpp:(.text+0x3164): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' /usr/bin/ld: CMakeFiles/test_autoware_planning_validator.dir/test/src/test_planning_validator_node_interface.cpp.o: in function `generateNode()': test_planning_validator_node_interface.cpp:(.text+0x14d5): undefined reference to `autoware::planning_validator::PlanningValidator::PlanningValidator(rclcpp::NodeOptions const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [CMakeFiles/test_autoware_planning_validator.dir/build.make:736:test_autoware_planning_validator] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:761:CMakeFiles/test_autoware_planning_validator.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< autoware_planning_validator [54.8s, exited with code 2] Summary: 400 packages finished [12min 14s] 13 packages failed: autoware_behavior_path_goal_planner_module autoware_costmap_generator autoware_cuda_pointcloud_preprocessor autoware_dummy_perception_publisher autoware_lidar_centerpoint autoware_lidar_transfusion autoware_obstacle_cruise_planner autoware_planning_validator autoware_probabilistic_occupancy_grid_map autoware_tensorrt_plugins autoware_tensorrt_yolox bevdet_vendor trt_batched_nms 393 packages had stderr output: agnocast_e2e_test agnocast_ioctl_wrapper agnocast_sample_application agnocast_sample_interfaces agnocastlib astra_camera astra_camera_msgs autoware_accel_brake_map_calibrator autoware_adapi_adaptors autoware_adapi_specs autoware_adapi_v1_msgs autoware_adapi_version_msgs autoware_agnocast_wrapper autoware_ar_tag_based_localizer autoware_auto_common autoware_automatic_pose_initializer autoware_autonomous_emergency_braking autoware_bag_time_manager_rviz_plugin autoware_behavior_path_avoidance_by_lane_change_module autoware_behavior_path_dynamic_obstacle_avoidance_module autoware_behavior_path_external_request_lane_change_module autoware_behavior_path_goal_planner_module autoware_behavior_path_lane_change_module autoware_behavior_path_planner autoware_behavior_path_planner_common autoware_behavior_path_sampling_planner_module autoware_behavior_path_side_shift_module autoware_behavior_path_start_planner_module autoware_behavior_path_static_obstacle_avoidance_module autoware_behavior_velocity_blind_spot_module autoware_behavior_velocity_crosswalk_module autoware_behavior_velocity_detection_area_module autoware_behavior_velocity_intersection_module autoware_behavior_velocity_no_drivable_lane_module autoware_behavior_velocity_no_stopping_area_module autoware_behavior_velocity_occlusion_spot_module autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_rtc_interface autoware_behavior_velocity_run_out_module autoware_behavior_velocity_speed_bump_module autoware_behavior_velocity_stop_line_module autoware_behavior_velocity_template_module autoware_behavior_velocity_traffic_light_module autoware_behavior_velocity_virtual_traffic_light_module autoware_behavior_velocity_walkway_module autoware_bezier_sampler autoware_bluetooth_monitor autoware_boundary_departure_checker autoware_bytetrack autoware_cluster_merger autoware_collision_detector autoware_compare_map_segmentation autoware_component_interface_specs autoware_component_interface_specs_universe autoware_component_interface_tools autoware_component_interface_utils autoware_component_monitor autoware_component_state_monitor autoware_control_evaluator autoware_control_msgs autoware_control_performance_analysis autoware_control_validator autoware_core autoware_core_control autoware_core_localization autoware_core_map autoware_core_perception autoware_core_planning autoware_core_sensing autoware_core_vehicle autoware_costmap_generator autoware_crop_box_filter autoware_crosswalk_traffic_light_estimator autoware_cuda_pointcloud_preprocessor autoware_cuda_utils autoware_default_adapi autoware_detected_object_feature_remover autoware_diagnostic_graph_aggregator autoware_diagnostic_graph_utils autoware_dummy_diag_publisher autoware_dummy_infrastructure autoware_dummy_perception_publisher autoware_duplicated_node_checker autoware_ekf_localizer autoware_elevation_map_loader autoware_euclidean_cluster autoware_euclidean_cluster_object_detector autoware_external_api_msgs autoware_external_cmd_converter autoware_external_cmd_selector autoware_external_velocity_limit_selector autoware_fake_test_node autoware_fault_injection autoware_freespace_planner autoware_freespace_planning_algorithms autoware_frenet_planner autoware_geo_pose_projector autoware_geography_utils autoware_global_parameter_loader autoware_glog_component autoware_gnss_poser autoware_goal_distance_calculator autoware_grid_map_utils autoware_ground_filter autoware_ground_segmentation autoware_gyro_odometer autoware_hazard_status_converter autoware_image_diagnostics autoware_image_transport_decompressor autoware_imu_corrector autoware_internal_localization_msgs autoware_interpolation autoware_iv_external_api_adaptor autoware_iv_internal_api_adaptor autoware_joy_controller autoware_kalman_filter autoware_kinematic_evaluator autoware_landmark_manager autoware_lane_departure_checker autoware_lanelet2_extension autoware_lanelet2_extension_python autoware_lanelet2_map_visualizer autoware_lanelet2_utils autoware_learning_based_vehicle_model autoware_lidar_centerpoint autoware_lidar_marker_localizer autoware_lidar_transfusion autoware_livox_tag_filter autoware_localization_error_monitor autoware_localization_evaluator autoware_localization_msgs autoware_localization_rviz_plugin autoware_localization_util autoware_map_based_prediction autoware_map_height_fitter autoware_map_loader autoware_map_msgs autoware_map_projection_loader autoware_map_tf_generator autoware_mission_details_overlay_rviz_plugin autoware_mission_planner autoware_mission_planner_universe autoware_motion_utils autoware_motion_velocity_dynamic_obstacle_stop_module autoware_motion_velocity_obstacle_cruise_module autoware_motion_velocity_obstacle_slow_down_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_obstacle_velocity_limiter_module autoware_motion_velocity_out_of_lane_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_motion_velocity_run_out_module autoware_mpc_lateral_controller autoware_mrm_comfortable_stop_operator autoware_mrm_emergency_stop_operator autoware_mrm_handler autoware_msgs autoware_multi_object_tracker autoware_ndt_scan_matcher autoware_node autoware_object_merger autoware_object_range_splitter autoware_object_recognition_utils autoware_object_velocity_splitter autoware_objects_of_interest_marker_interface autoware_obstacle_collision_checker autoware_obstacle_cruise_planner autoware_obstacle_stop_planner autoware_occupancy_grid_map_outlier_filter autoware_operation_mode_transition_manager autoware_osqp_interface autoware_overlay_rviz_plugin autoware_path_distance_calculator autoware_path_generator autoware_path_optimizer autoware_path_sampler autoware_path_smoother autoware_pcl_extensions autoware_perception_objects_converter autoware_perception_online_evaluator autoware_perception_rviz_plugin autoware_pid_longitudinal_controller autoware_planning_evaluator autoware_planning_factor_interface autoware_planning_rviz_plugin autoware_planning_test_manager autoware_planning_topic_converter autoware_planning_validator autoware_point_types autoware_pointcloud_preprocessor autoware_polar_grid autoware_pose2twist autoware_pose_covariance_modifier autoware_pose_estimator_arbiter autoware_pose_initializer autoware_pose_instability_detector autoware_predicted_path_checker autoware_probabilistic_occupancy_grid_map autoware_processing_time_checker autoware_pure_pursuit autoware_pyplot autoware_qp_interface autoware_radar_crossing_objects_noise_filter autoware_radar_fusion_to_detected_object autoware_radar_object_clustering autoware_radar_object_tracker autoware_radar_objects_adapter autoware_radar_scan_to_pointcloud2 autoware_radar_static_pointcloud_filter autoware_radar_threshold_filter autoware_radar_tracks_msgs_converter autoware_radar_tracks_noise_filter autoware_raw_vehicle_cmd_converter autoware_remaining_distance_time_calculator autoware_route_handler autoware_rtc_interface autoware_sampler_common autoware_scenario_selector autoware_scenario_simulator_v2_adapter autoware_sensing_msgs autoware_shape_estimation autoware_shift_decider autoware_signal_processing autoware_simple_object_merger autoware_simple_planning_simulator autoware_simple_pure_pursuit autoware_smart_mpc_trajectory_follower autoware_steer_offset_estimator autoware_stop_filter autoware_string_stamped_rviz_plugin autoware_surround_obstacle_checker autoware_system_diagnostic_monitor autoware_system_monitor autoware_system_msgs autoware_tensorrt_classifier autoware_tensorrt_plugins autoware_tensorrt_yolox autoware_test_node autoware_test_utils autoware_testing autoware_time_utils autoware_topic_relay_controller autoware_topic_state_monitor autoware_tracking_object_merger autoware_traffic_light_arbiter autoware_traffic_light_category_merger autoware_traffic_light_map_based_detector autoware_traffic_light_multi_camera_fusion autoware_traffic_light_occlusion_predictor autoware_traffic_light_recognition_marker_publisher autoware_traffic_light_selector autoware_traffic_light_utils autoware_traffic_light_visualization autoware_trajectory autoware_trajectory_follower_base autoware_trajectory_follower_node autoware_twist2accel autoware_universe_utils autoware_utils autoware_utils_debug autoware_utils_diagnostics autoware_utils_geometry autoware_utils_logging autoware_utils_math autoware_utils_pcl autoware_utils_rclcpp autoware_utils_system autoware_utils_tf autoware_utils_uuid autoware_utils_visualization autoware_v2x_msgs autoware_vehicle_cmd_gate autoware_vehicle_door_simulator autoware_vehicle_info_utils autoware_vehicle_msgs autoware_vehicle_velocity_converter autoware_velocity_smoother autoware_velodyne_monitor awapi_awiv_adapter awsim_labs_sensor_kit_description awsim_labs_sensor_kit_launch awsim_labs_vehicle_description awsim_labs_vehicle_launch awsim_sensor_kit_description awsim_sensor_kit_launch bevdet_vendor boost_io_context boost_serial_driver boost_tcp_driver boost_udp_driver camera_description can_bridge can_msgs cartop common_awsim_labs_sensor_launch common_sensor_launch continental_msgs continental_srvs cubtek_can cubtek_can_msgs cubtek_radar_adapter cuda_blackboard demo_cpp_tf dummy_status_publisher eagleye_coordinate eagleye_fix2kml eagleye_geo_pose_converter eagleye_geo_pose_fusion eagleye_gnss_converter eagleye_msgs eagleye_navigation eagleye_rt eagleye_tf glog imu_description imu_release livox_description llh_converter managed_transform_buffer morai_msgs mussp nebula_common nebula_decoders nebula_examples nebula_hw_interfaces nebula_msgs nebula_ros nebula_sensor_driver nebula_tests negotiated_examples pandar_description pandar_msgs perception_utils pointcloud_to_laserscan radar_description robosense_msgs ros2_wit_imu rtklib_bridge rtklib_msgs sample_sensor_kit_description sample_sensor_kit_launch sample_vehicle_description sample_vehicle_launch seyond single_lidar_common_launch single_lidar_sensor_kit_description single_lidar_sensor_kit_launch tier4_adapi_rviz_plugin tier4_api_msgs tier4_api_utils tier4_auto_msgs_converter tier4_autoware_api_launch tier4_camera_view_rviz_plugin tier4_control_launch tier4_control_msgs tier4_datetime_rviz_plugin tier4_debug_msgs tier4_deprecated_api_adapter tier4_dummy_object_rviz_plugin tier4_external_api_msgs tier4_hmi_msgs tier4_localization_launch tier4_localization_msgs tier4_localization_rviz_plugin tier4_map_launch tier4_map_msgs tier4_metric_msgs tier4_perception_msgs tier4_planning_factor_rviz_plugin tier4_planning_msgs tier4_rtc_msgs tier4_sensing_launch tier4_simulation_msgs tier4_state_rviz_plugin tier4_system_launch tier4_system_msgs tier4_system_rviz_plugin tier4_traffic_light_rviz_plugin tier4_v2x_msgs tier4_vehicle_launch tier4_vehicle_msgs tier4_vehicle_rviz_plugin tmlidar_msg tmlidar_sdk trt_batched_nms velodyne_description vls_description yabloc_common yabloc_image_processing yabloc_monitor yabloc_particle_filter yabloc_pose_initializer 11 packages not processed zy@zy-Lenovo-Legion-R7000P2020H:~/autoware$
08-30
/* Edge Impulse Arduino examples * Copyright (c) 2022 EdgeImpulse Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ // These sketches are tested with 2.0.4 ESP32 Arduino Core // https://github.com/espressif/arduino-esp32/releases/tag/2.0.4 // If your target is limited in memory remove this macro to save 10K RAM #define EIDSP_QUANTIZE_FILTERBANK 0 /* ** NOTE: If you run into TFLite arena allocation issue. ** ** This may be due to may dynamic memory fragmentation. ** Try defining "-DEI_CLASSIFIER_ALLOCATION_STATIC" in boards.local.txt (create ** if it doesn't exist) and copy this file to ** `<ARDUINO_CORE_INSTALL_PATH>/arduino/hardware/<mbed_core>/<core_version>/`. ** ** See ** (https://support.arduino.cc/hc/en-us/articles/360012076960-Where-are-the-installed-cores-located-) ** to find where Arduino installs cores on your machine. ** ** If the problem persists then there's not enough memory for this model and application. */ /* Includes ---------------------------------------------------------------- */ #include <Project-name_inferencing.h> #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" /** Audio buffers, pointers and selectors */ typedef struct { int16_t *buffer; uint8_t buf_ready; uint32_t buf_count; uint32_t n_samples; } inference_t; static inference_t inference; static signed short sampleBuffer[EI_CLASSIFIER_RAW_SAMPLE_COUNT]; static bool debug_nn = false; // Set this to true to see e.g. features generated from the raw signal static bool record_status = true; static TaskHandle_t xCaptureTaskHandle = NULL; const int led = 21; const int led_record = 8; const int AUDIO_IN = 0; // 选择 GPIO 0 作为模拟输入 /** * @brief Arduino setup function */ void setup() { // put your setup code here, to run once: Serial.begin(115200); // comment out the below line to cancel the wait for USB connection (needed for native USB) while (!Serial) ; Serial.println("Edge Impulse Inferencing"); // summary of inferencing settings (from model_metadata.h) ei_printf("Inferencing settings:\n"); ei_printf("\tInterval: "); ei_printf_float((float)EI_CLASSIFIER_INTERVAL_MS); ei_printf(" ms.\n"); ei_printf("\tFrame size: %d\n", EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE); ei_printf("\tSample length: %d ms.\n", EI_CLASSIFIER_RAW_SAMPLE_COUNT / 16); ei_printf("\tNo. of classes: %d\n", sizeof(ei_classifier_inferencing_categories) / sizeof(ei_classifier_inferencing_categories[0])); ei_printf("\nStarting continious inference in 2 seconds...\n"); pinMode(led, OUTPUT); pinMode(led_record, OUTPUT); digitalWrite(led, 1); ei_sleep(2000); digitalWrite(led, 0); if (microphone_inference_start(EI_CLASSIFIER_RAW_SAMPLE_COUNT) == false) { ei_printf("ERR: Could not allocate audio buffer (size %d), this could be due to the window length of your model\r\n", EI_CLASSIFIER_RAW_SAMPLE_COUNT); return; } ei_printf("Recording...\n"); xTaskNotifyGive(xCaptureTaskHandle); } /** * @brief Arduino main function. Runs the inferencing loop. */ float max_probability = 0; int max_probability_ix = 0; void loop() { bool m = microphone_inference_record(); if (!m) { ei_printf("ERR: Failed to record audio...\n"); return; } signal_t signal; signal.total_length = EI_CLASSIFIER_RAW_SAMPLE_COUNT; signal.get_data = &microphone_audio_signal_get_data; ei_impulse_result_t result = {0}; EI_IMPULSE_ERROR r = run_classifier(&signal, &result, debug_nn); if (r != EI_IMPULSE_OK) { ei_printf("ERR: Failed to run classifier (%d)\n", r); return; } // print the predictions ei_printf("Predictions "); ei_printf("(DSP: %d ms., Classification: %d ms., Anomaly: %d ms.)", result.timing.dsp, result.timing.classification, result.timing.anomaly); ei_printf(": \n"); max_probability = 0; max_probability_ix = 0; for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf(" %s: ", result.classification[ix].label); ei_printf_float(result.classification[ix].value); ei_printf("\n"); if (max_probability <= result.classification[ix].value) { max_probability = result.classification[ix].value; max_probability_ix = ix; } } if (strcmp(result.classification[max_probability_ix].label, "beihang") == 0) { ei_printf("北京航空航天大学\n"); digitalWrite(led, LOW); } else if (strcmp(result.classification[max_probability_ix].label, "shie") == 0) { ei_printf("士谔书院\n"); digitalWrite(led, HIGH); } else if (strcmp(result.classification[max_probability_ix].label, "hyn") == 0) { ei_printf("何玥凝\n"); digitalWrite(led, 0); } else if (strcmp(result.classification[max_probability_ix].label, "hsy") == 0) { ei_printf("黄诗莹\n"); digitalWrite(led, 0); } else { ei_printf("未检测到有效指令\n"); digitalWrite(led, LOW); } #if EI_CLASSIFIER_HAS_ANOMALY == 1 ei_printf(" anomaly score: "); ei_printf_float(result.anomaly); ei_printf("\n"); #endif xTaskNotifyGive(xCaptureTaskHandle); } static void audio_inference_callback(uint32_t n_bytes) { ei_printf("DATA "); for (int i = 0; i < n_bytes; i++) { inference.buffer[inference.buf_count++] = sampleBuffer[i]; if (inference.buf_count >= inference.n_samples) { inference.buf_count = 0; inference.buf_ready = 1; } // if(i > 8000 ) { ei_printf("%d ", sampleBuffer[i]); } } ei_printf("\n"); } unsigned long pre_time = 0; const byte sample_interval = 125; //采样时间间隔125us,即采样率8kHz const byte scale = 4; //幅度缩放因子 const int thresh = 400; int adcValue = 0; bool ADCfast(void) { static int zero = 580; int curSample = 0; static unsigned long prevTime; long val = 0; bool Collecting = false; unsigned long triggerTimeout = millis(); // 超时计时 while(!Collecting && (millis() - triggerTimeout < 2000)){ prevTime = micros(); adcValue = analogRead(AUDIO_IN); // 读取模拟信号 val = adcValue / scale; // 将ADC采样值进行尺度缩放 // 去除直流偏置值 if (val < zero) zero--; else zero++; val = val - zero; if (abs(val) > thresh){ Collecting = true; break; } while (micros() - prevTime < sample_interval); } for (curSample = 0; curSample < EI_CLASSIFIER_RAW_SAMPLE_COUNT; curSample++) { prevTime = micros(); adcValue = analogRead(AUDIO_IN); // 读取模拟信号 val = adcValue / scale; // 将ADC采样值进行尺度缩放 // 去除直流偏置值 if (val < zero) zero--; else zero++; val = val - zero; sampleBuffer[curSample] = val; while (micros() - prevTime < sample_interval); } return Collecting; } static void capture_samples(void *arg) { const int32_t bytes_to_read = (uint32_t)arg; size_t bytes_read = bytes_to_read; const int32_t threshold = 625; int threshold_cnt; int start_point; while (record_status) { ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(5000)); ei_printf("----------------请说语音指令----------------\n"); digitalWrite(led_record, LOW); ADCfast(); digitalWrite(led_record, HIGH); if (record_status) { audio_inference_callback(EI_CLASSIFIER_RAW_SAMPLE_COUNT); } else { break; } vTaskDelay(pdMS_TO_TICKS(2000)); } vTaskDelete(NULL); } /** * @brief Init inferencing struct and setup/start PDM * @param [in] n_samples The n samples * @return { description_of_the_return_value } */ static bool microphone_inference_start(uint32_t n_samples) { inference.buffer = (int16_t *)malloc(n_samples * sizeof(int16_t)); if (inference.buffer == NULL) { return false; } inference.buf_count = 0; inference.n_samples = n_samples; inference.buf_ready = 0; ei_sleep(100); record_status = true; xTaskCreate(capture_samples, "CaptureSamples", 1024 * 32, (void *)(EI_CLASSIFIER_RAW_SAMPLE_COUNT * sizeof(sampleBuffer[0])), 10, &xCaptureTaskHandle); return true; } static bool microphone_inference_record(void) { bool ret = true; while (inference.buf_ready == 0) { delay(10); } inference.buf_ready = 0; return ret; } static int microphone_audio_signal_get_data(size_t offset, size_t length, float *out_ptr) { numpy::int16_to_float(&inference.buffer[offset], out_ptr, length); return 0; } static void microphone_inference_end(void) { ei_free(inference.buffer); } #if !defined(EI_CLASSIFIER_SENSOR) || EI_CLASSIFIER_SENSOR != EI_CLASSIFIER_SENSOR_MICROPHONE #error "Invalid model for current sensor." #endif 这个代码,我需要通过麦克风读入外界音频进行识别,但是实际上对于大多是人声,这个代码在串口监视器里面反馈的都是label何玥凝,其他标签反馈不出来,现在已知是模型精确度很高,达到97%
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值