MAVROS2插件的黑名单白名单设置
环境:
Ubuntu :20.04 LTS
ROS :ROS2 Foxy
PX4 :1.13.0
在ROS2与PX4集成时,MAVROS2插件提供了一个强大的桥梁,可以帮助ROS与MAVLink通信。在实际应用中,可能会有不需要的MAVROS2插件被加载,从而浪费系统资源,或对性能造成影响。为了解决这个问题,MAVROS2提供了插件黑名单(denylist)和白名单(allowlist)功能,可以控制哪些插件被加载或禁用。
MAVROS2插件
MAVROS2插件用于处理与无人机和其他MAVLink设备之间的通信。这些插件负责不同的功能,如姿态控制、导航、传感器数据处理等。根据具体的应用场景,可能不需要加载所有插件,为了提高系统性能或减少不必要的功能,MAVROS2允许通过配置文件来管理这些插件。
-
黑名单(Denylist):配置在黑名单中的插件将被禁用,不会被加载。‘
-
白名单(Allowlist):配置在白名单中的插件将被加载,未在白名单中的插件将被禁用。
配置文件结构
MAVROS2的插件管理通过ROS2参数文件进行配置。下面是一个示例配置文件,展示了如何设置黑名单和白名单。
/**:
ros__parameters:
plugin_denylist:
# common
- actuator_control
- altitude
- command
- ftp
- geofence
- global_position
- home_position
- imu
- local_position
- manual_control
- nav_controller_output
- param
- rallypoint
- rc_io
- setpoint_accel
- setpoint_attitude
- setpoint_position
- setpoint_raw
- setpoint_trajectory
- setpoint_velocity
- sys_status
- sys_time
- waypoint
- wind_estimation
# extras
- adsb
- cam_imu_sync
- camera
- cellular_status
- companion_process_status
- debug_value
- distance_sensor
- esc_status
- esc_telemetry
- fake_gps
- gps_input
- gps_rtk
- gps_status
- guided_target
- hil
- landing_target
- log_transfer
- mag_calibration_status
- mocap_pose_estimate
- mount_control
- obstacle_distance
- odometry
- onboard_computer_status
- optical_flow
- play_tune
- px4flow
- rangefinder
- tdr_radio
- terrain
- trajectory
- tunnel
- vfr_hud
- vibration
- vision_pose
- vision_speed
- wheel_odometry
# plugin_allowlist:
# - 'sys_*'
黑名单与白名单的优先级
在配置中,黑名单和白名单不能同时使用。系统会根据配置文件中存在的某一列表来决定插件加载的规则:
-
只有黑名单:所有未列入黑名单的插件将被加载。
-
只有白名单:只有列入白名单的插件会被加载。
-
两者都存在:如果同时定义了黑名单和白名单,ROS2将优先使用白名单。
总结
通过合理设置MAVROS2插件的黑名单和白名单,可以有效控制系统资源的使用,确保只加载必要的插件,从而提高系统的整体性能和稳定性。在实际应用中,根据具体需求灵活选择黑名单或白名单策略,将有助于更好地管理ROS2与PX4的集成。
参考资料: