PX4 全驱无人机 MAVROS 发布 actuator_control 消息

全驱无人机力矩控制扩展:从MAVLINK到PX4/Firmware的修改教程,

如果想要通过发布力和力矩控制全驱无人机,那么就需要发布三个方向的力矩和三个方向的力,总共六个控制量,而对于默认原版的actuator_control消息,其中只有四个控制量,因此需要进行修改。具体修改流程如下:

一、修改UORB消息

在msg文件夹下对actuator_controls.msg文件进行修改,增添三方向力参数,分别命名为INDEX_X_THRUST、INDEX_Y_THRUST、INDEX_Z_THRUST,控制通道数由8改为11

修改完成后编译,会生成对应.h头文件

make px4_sitl gazebo

二、修改MAVROS包

因为我们需要对MAVROS和MAVLINK包进行二次开发,因此这里不建议使用二进制安装,更推荐使用源码安装,安装步骤可参考我之前的博客:源码方式安装MAVROS包;如果是已经进行过二进制安装的,也建议将之前的包删除,避免不必要的麻烦。

在mavros_msg/msg文件夹下找到ActuatorControl.msg文件,将控制通道数由8改为11

这里我们先不编译,等到修改MavLink包后一同编译

三、修改MAVLINK包

在mavlink/message_definition/v1.0/文件夹下找到common.xml文件,分别将“SET_ACTUATOR_CONTROL_TARGET”和“ACTUATOR_CONTROL_TARGET”这两块对应的控制通道数改为11

保存后进行编译

catkin build

若修改成功,可以在build文件夹下找到mavlink_msg_actuator_control_target.h文件,检查通道数与一些其他参数是否发生改变;若发生改变,则说明修改成功

四、修改PX4/Firmware中的mavlink包

步骤同上,在mavlink/include/mavlink/v2.0/message_definition/文件夹下找到common.xml文件,分别将“SET_ACTUATOR_CONTROL_TARGET”和“ACTUATOR_CONTROL_TARGET”这两块对应的控制通道数改为11

保存后,首先需要使用Mavlink Generator工具进行编译,可以在源码安装的mavlink包中找到mavgenerate.py文件,在命令行中输入

python3 mavgenerate.py

即可运行Mavlink Generator工具

XML一栏选择~/Firmware/mavlink/include/mavlink/v2.0/message_definitions/standard.xml
输出一栏选择~/Firmware/mavlink/include/mavlink/v2.0
语言一栏选择 C
选择 2.0
勾选 Validate
点击 Generate 按钮

若修改成功,可以在mavlink/include/mavlink/v2.0/common文件夹下找到mavlink_msg_actuator_control_target.h文件,检查通道数与一些其他参数是否发生改变;若发生改变,则说明修改成功,注意此时与步骤三中最后生成的文件完成一致,若有部分参数不一致,说明修改失败

五、修改PX4/Firmware中的mavlink_receiver模块

在src/modules/mavlink文件夹下找到mavlink_receiver.cpp,对handle_message_set_actuator_control_target函数进行修改

六、修改参数ENABLE_LOCKSTEP_SCHEDULER

在boards/px4/sitl文件夹下找到default.cmake文件,修改参数ENABLE_LOCKSTEP_SCHEDULER为no

在对应模型的sdf文件中修改mavlink插件下的参数enable_lockstep为0

 结束后再对整个固件进行编译

make px4_sitl gazebo

七、测试

启动mavros仿真

roslaunch mavros_posix_sitl.launch

运行自定义mavros程序,发布actuator_control数据,示例代码如下:

#! /usr/bin/env python

import rospy
import math
from geometry_msgs.msg import PoseStamped
from mavros_msgs.msg import State, ActuatorControl
from mavros_msgs.srv import CommandBool, CommandBoolRequest, SetMode, SetModeRequest

current_state = State()

def state_cb(msg):
    global current_state
    current_state = msg

local_pos = PoseStamped()

def local_pos_cb(local_pos_msg):
    global local_pos
    local_pos = local_pos_msg

if __name__ == "__main__":
    rospy.init_node("offb_force_py")

    state_sub = rospy.Subscriber("mavros/state", State, callback = state_cb)
    local_pos_sb = rospy.Subscriber("mavros/local_position/pose", PoseStamped, callback = local_pos_cb)

    local_pos_pub = rospy.Publisher("mavros/setpoint_position/local", PoseStamped, queue_size=10)
    ActuatorControl_pub = rospy.Publisher("mavros/actuator_control", ActuatorControl, queue_size=10)

    rospy.wait_for_service("/mavros/cmd/arming")
    arming_client = rospy.ServiceProxy("mavros/cmd/arming", CommandBool)

    rospy.wait_for_service("/mavros/set_mode")
    set_mode_client = rospy.ServiceProxy("mavros/set_mode", SetMode)


    # Setpoint publishing MUST be faster than 2Hz
    rate = rospy.Rate(250)

    # Wait for Flight Controller connection
    while(not rospy.is_shutdown() and not current_state.connected):
        rate.sleep()

    pose = PoseStamped()

    pose.pose.position.x = 0
    pose.pose.position.y = 0
    pose.pose.position.z = 2

    actuator_control = ActuatorControl()

    actuator_control.group_mix = 0
    actuator_control.controls[0] = 0.000          # ROLL
    actuator_control.controls[1] = 0.000          # PITCH
    actuator_control.controls[2] = 0.000          # YAW
    actuator_control.controls[3] = 0.824        # THROTTLE
    actuator_control.controls[4] = 0.0          # FLAPS
    actuator_control.controls[5] = 0.0          # SPOILERS
    actuator_control.controls[6] = 0.0          # AIRBRAKES
    actuator_control.controls[7] = -1.0          # LANDING_GEAR
    actuator_control.controls[8] = 0.000         # X_THRUST
    actuator_control.controls[9] = -0.00          # Y_THRUST
    actuator_control.controls[10] = -0.824        # Z_THRUST
    # actuator_control.header.seq = 1
    # actuator_control.header.stamp = rospy.Time.now()
    # actuator_control.header.frame_id = "test"

    # Send a few setpoints before starting
    for i in range(100):
        if(rospy.is_shutdown()):
            break

        local_pos_pub.publish(pose)
        ActuatorControl_pub.publish(actuator_control)
        rate.sleep()

    offb_set_mode = SetModeRequest()
    offb_set_mode.custom_mode = 'OFFBOARD'

    arm_cmd = CommandBoolRequest()
    arm_cmd.value = True

    last_req = rospy.Time.now()
    
    count = 0
    take_off = False
    reach_height = False

    while(not rospy.is_shutdown()):
        if(current_state.mode != "OFFBOARD" and (rospy.Time.now() - last_req) > rospy.Duration(2.0)):
            if(set_mode_client.call(offb_set_mode).mode_sent == True):
                rospy.loginfo("OFFBOARD enabled")

            last_req = rospy.Time.now()
        else:
            if(not current_state.armed and (rospy.Time.now() - last_req) > rospy.Duration(2.0)):
                if(arming_client.call(arm_cmd).success == True):
                    rospy.loginfo("Vehicle armed")
                    take_off = True

                last_req = rospy.Time.now()

        if(count == 0 and not reach_height):
            local_pos_pub.publish(pose)
            if(math.fabs(local_pos.pose.position.z - 2) <= 0.3):
                reach_height = True
                rospy.loginfo("Reach Height!")
                count = 1
        elif(take_off and count == 1):
            actuator_control.header.stamp = rospy.Time.now()        
            ActuatorControl_pub.publish(actuator_control)
        

        rate.sleep()

在mavros仿真窗口中输入

listener actuator_controls_0

可以看到如下结果,说明修改成功

lixing@lixing:~/1/Fast-LIO2$ rostopic list /LIVO2/imu_propagate /Laser_map /Odometry /aft_mapped_to_init /broadcast_bspline /broadcast_bspline2 /clicked_point /clock /cloud_effected /cloud_registered /cloud_visual_sub_map_before /diagnostics /drone_0_/scan /drone_0_ego_planner_node/a_star_list /drone_0_ego_planner_node/global_list /drone_0_ego_planner_node/goal_point /drone_0_ego_planner_node/grid_map/occupancy /drone_0_ego_planner_node/grid_map/occupancy_inflate /drone_0_ego_planner_node/init_list /drone_0_ego_planner_node/optimal_list /drone_0_odom_visualization/cmd /drone_0_odom_visualization/covariance /drone_0_odom_visualization/covariance_velocity /drone_0_odom_visualization/height /drone_0_odom_visualization/path /drone_0_odom_visualization/pose /drone_0_odom_visualization/robot /drone_0_odom_visualization/sensor /drone_0_odom_visualization/trajectory /drone_0_odom_visualization/velocity /drone_0_planning/bspline /drone_0_planning/data_display /drone_0_planning/pos_cmd /drone_0_planning/swarm_trajs /drone_0_traj_server/ego_command_enable /dyn_obj /dyn_obj_dbg_hist /dyn_obj_removed /fsm_node/visualization/exp_traj /gazebo/link_states /gazebo/model_states /gazebo/parameter_descriptions /gazebo/parameter_updates /gazebo/performance_metrics /gazebo/set_link_state /gazebo/set_model_state /initialpose /mavlink/from /mavlink/gcs_ip /mavlink/to /mavros/actuator_control /mavros/adsb/send /mavros/adsb/vehicle /mavros/altitude /mavros/battery /mavros/cam_imu_sync/cam_imu_stamp /mavros/camera/image_captured /mavros/cellular_status/status /mavros/companion_process/status /mavros/debug_value/debug /mavros/debug_value/debug_float_array /mavros/debug_value/debug_vector /mavros/debug_value/named_value_float /mavros/debug_value/named_value_int /mavros/debug_value/send /mavros/esc_info /mavros/esc_status /mavros/esc_telemetry /mavros/estimator_status /mavros/extended_state /mavros/fake_gps/mocap/tf /mavros/geofence/waypoints /mavros/global_position/compass_hdg /mavros/global_position/global /mavros/global_position/gp_lp_offset /mavros/global_position/gp_origin /mavros/global_position/local /mavros/global_position/raw/fix /mavros/global_position/raw/gps_vel /mavros/global_position/raw/satellites /mavros/global_position/rel_alt /mavros/global_position/set_gp_origin /mavros/gps_input/gps_input /mavros/gps_rtk/rtk_baseline /mavros/gps_rtk/send_rtcm /mavros/gpsstatus/gps1/raw /mavros/gpsstatus/gps1/rtk /mavros/gpsstatus/gps2/raw /mavros/gpsstatus/gps2/rtk /mavros/hil/actuator_controls /mavros/hil/controls /mavros/hil/gps /mavros/hil/imu_ned /mavros/hil/optical_flow /mavros/hil/rc_inputs /mavros/hil/state /mavros/home_position/home /mavros/home_position/set /mavros/imu/data /mavros/imu/data_raw /mavros/imu/diff_pressure /mavros/imu/mag /mavros/imu/static_pressure /mavros/imu/temperature_baro /mavros/imu/temperature_imu /mavros/landing_target/lt_marker /mavros/landing_target/pose /mavros/landing_target/pose_in /mavros/local_position/accel /mavros/local_position/odom /mavros/local_position/pose /mavros/local_position/pose_cov /mavros/local_position/velocity_body /mavros/local_position/velocity_body_cov /mavros/local_position/velocity_local /mavros/log_transfer/raw/log_data /mavros/log_transfer/raw/log_entry /mavros/mag_calibration/report /mavros/mag_calibration/status /mavros/manual_control/control /mavros/manual_control/send /mavros/mission/reached /mavros/mission/waypoints /mavros/mocap/pose /mavros/mount_control/command /mavros/mount_control/orientation /mavros/mount_control/status /mavros/nav_controller_output /mavros/obstacle/send /mavros/odometry/in /mavros/odometry/out /mavros/onboard_computer/status /mavros/param/param_value /mavros/play_tune /mavros/px4flow/ground_distance /mavros/px4flow/raw/optical_flow_rad /mavros/px4flow/raw/send /mavros/px4flow/temperature /mavros/radio_status /mavros/rallypoint/waypoints /mavros/rc/in /mavros/rc/out /mavros/rc/override /mavros/setpoint_accel/accel /mavros/setpoint_attitude/cmd_vel /mavros/setpoint_attitude/thrust /mavros/setpoint_position/global /mavros/setpoint_position/global_to_local /mavros/setpoint_position/local /mavros/setpoint_raw/attitude /mavros/setpoint_raw/global /mavros/setpoint_raw/local /mavros/setpoint_raw/target_attitude /mavros/setpoint_raw/target_global /mavros/setpoint_raw/target_local /mavros/setpoint_trajectory/desired /mavros/setpoint_trajectory/local /mavros/setpoint_velocity/cmd_vel /mavros/setpoint_velocity/cmd_vel_unstamped /mavros/state /mavros/statustext/recv /mavros/statustext/send /mavros/sys_status /mavros/target_actuator_control /mavros/terrain/report /mavros/time_reference /mavros/timesync_status /mavros/trajectory/desired /mavros/trajectory/generated /mavros/trajectory/path /mavros/tunnel/in /mavros/tunnel/out /mavros/vfr_hud /mavros/vision_pose/pose /mavros/vision_pose/pose_cov /mavros/vision_speed/speed_twist_cov /mavros/wind_estimation /move_base_simple/goal /path /planes /planner_normal /planner_normal_array /rgb_img /rgb_img/compressed /rgb_img/compressed/parameter_descriptions /rgb_img/compressed/parameter_updates /rgb_img/compressedDepth /rgb_img/compressedDepth/parameter_descriptions /rgb_img/compressedDepth/parameter_updates /rgb_img/mouse_click /rgb_img/theora /rgb_img/theora/parameter_descriptions /rgb_img/theora/parameter_updates /rosout /rosout_agg /scan /stereo/left/camera_info /stereo/left/image_raw /stereo/left/image_raw/compressed /stereo/left/image_raw/compressed/parameter_descriptions /stereo/left/image_raw/compressed/parameter_updates /stereo/left/image_raw/compressedDepth /stereo/left/image_raw/compressedDepth/parameter_descriptions /stereo/left/image_raw/compressedDepth/parameter_updates /stereo/left/image_raw/theora /stereo/left/image_raw/theora/parameter_descriptions /stereo/left/image_raw/theora/parameter_updates /stereo/left/parameter_descriptions /stereo/left/parameter_updates /stereo/right/camera_info /stereo/right/image_raw /stereo/right/image_raw/compressed /stereo/right/image_raw/compressed/parameter_descriptions /stereo/right/image_raw/compressed/parameter_updates /stereo/right/image_raw/compressedDepth /stereo/right/image_raw/compressedDepth/parameter_descriptions /stereo/right/image_raw/compressedDepth/parameter_updates /stereo/right/image_raw/theora /stereo/right/image_raw/theora/parameter_descriptions /stereo/right/image_raw/theora/parameter_updates /stereo/right/parameter_descriptions /stereo/right/parameter_updates /test_drone_detect/new_depth_image /tf /tf_static /vins_fusion/extrinsic /visualization_marker /voxels 该用哪个里程计话题
08-28
lixing@lixing:~/1/Fast-LIO2$ rostopic list /broadcast_bspline /clicked_point /clock /diagnostics /drone_0_ego_planner_node/a_star_list /drone_0_ego_planner_node/global_list /drone_0_ego_planner_node/goal_point /drone_0_ego_planner_node/grid_map/occupancy /drone_0_ego_planner_node/grid_map/occupancy_inflate /drone_0_ego_planner_node/init_list /drone_0_ego_planner_node/optimal_list /drone_0_ego_planner_node/optimal_list_array /drone_0_odom_visualization/cmd /drone_0_odom_visualization/covariance /drone_0_odom_visualization/covariance_velocity /drone_0_odom_visualization/height /drone_0_odom_visualization/path /drone_0_odom_visualization/pose /drone_0_odom_visualization/robot /drone_0_odom_visualization/robot_array /drone_0_odom_visualization/sensor /drone_0_odom_visualization/trajectory /drone_0_odom_visualization/velocity /drone_0_pcl_render_node/camera_pose /drone_0_pcl_render_node/cloud /drone_0_pcl_render_node/depth /drone_0_pcl_render_node/depth/mouse_click /drone_0_pcl_render_node/local_map /drone_0_planning/bspline /drone_0_planning/data_display /drone_0_planning/pos_cmd /drone_0_planning/swarm_trajs /drone_0_visual_slam/odom /drone_10_ego_planner_node/optimal_list /drone_10_ego_planner_node/optimal_list_array /drone_10_odom_visualization/path /drone_10_odom_visualization/robot /drone_10_odom_visualization/robot_array /drone_11_ego_planner_node/optimal_list /drone_11_ego_planner_node/optimal_list_array /drone_11_odom_visualization/path /drone_11_odom_visualization/robot /drone_11_odom_visualization/robot_array /drone_12_ego_planner_node/optimal_list /drone_12_ego_planner_node/optimal_list_array /drone_12_odom_visualization/path /drone_12_odom_visualization/robot /drone_12_odom_visualization/robot_array /drone_13_ego_planner_node/optimal_list /drone_13_ego_planner_node/optimal_list_array /drone_13_odom_visualization/path /drone_13_odom_visualization/robot /drone_13_odom_visualization/robot_array /drone_14_ego_planner_node/optimal_list /drone_14_ego_planner_node/optimal_list_array /drone_14_odom_visualization/path /drone_14_odom_visualization/robot /drone_14_odom_visualization/robot_array /drone_15_ego_planner_node/optimal_list /drone_15_ego_planner_node/optimal_list_array /drone_15_odom_visualization/path /drone_15_odom_visualization/robot /drone_15_odom_visualization/robot_array /drone_16_ego_planner_node/optimal_list /drone_16_ego_planner_node/optimal_list_array /drone_16_odom_visualization/path /drone_16_odom_visualization/robot /drone_16_odom_visualization/robot_array /drone_17_ego_planner_node/optimal_list /drone_17_ego_planner_node/optimal_list_array /drone_17_odom_visualization/path /drone_17_odom_visualization/robot /drone_17_odom_visualization/robot_array /drone_18_ego_planner_node/optimal_list /drone_18_ego_planner_node/optimal_list_array /drone_18_odom_visualization/path /drone_18_odom_visualization/robot /drone_18_odom_visualization/robot_array /drone_19_ego_planner_node/optimal_list /drone_19_ego_planner_node/optimal_list_array /drone_19_odom_visualization/path /drone_19_odom_visualization/robot /drone_19_odom_visualization/robot_array /drone_1_ego_planner_node/grid_map/occupancy_inflate /drone_1_ego_planner_node/optimal_list /drone_1_ego_planner_node/optimal_list_array /drone_1_odom_visualization/path /drone_1_odom_visualization/robot /drone_1_odom_visualization/robot_array /drone_1_pcl_render_node/depth/mouse_click /drone_20_ego_planner_node/optimal_list /drone_20_ego_planner_node/optimal_list_array /drone_20_odom_visualization/path /drone_20_odom_visualization/robot /drone_20_odom_visualization/robot_array /drone_2_ego_planner_node/grid_map/occupancy_inflate /drone_2_ego_planner_node/optimal_list /drone_2_ego_planner_node/optimal_list_array /drone_2_odom_visualization/path /drone_2_odom_visualization/robot /drone_2_odom_visualization/robot_array /drone_2_pcl_render_node/depth/mouse_click /drone_3_ego_planner_node/grid_map/occupancy_inflate /drone_3_ego_planner_node/optimal_list /drone_3_ego_planner_node/optimal_list_array /drone_3_odom_visualization/path /drone_3_odom_visualization/robot /drone_3_odom_visualization/robot_array /drone_3_pcl_render_node/depth/mouse_click /drone_4_ego_planner_node/grid_map/occupancy_inflate /drone_4_ego_planner_node/optimal_list /drone_4_ego_planner_node/optimal_list_array /drone_4_odom_visualization/path /drone_4_odom_visualization/robot /drone_4_odom_visualization/robot_array /drone_4_pcl_render_node/depth/mouse_click /drone_5_ego_planner_node/grid_map/occupancy_inflate /drone_5_ego_planner_node/optimal_list /drone_5_ego_planner_node/optimal_list_array /drone_5_odom_visualization/path /drone_5_odom_visualization/robot /drone_5_odom_visualization/robot_array /drone_5_pcl_render_node/depth/mouse_click /drone_6_ego_planner_node/grid_map/occupancy_inflate /drone_6_ego_planner_node/optimal_list /drone_6_ego_planner_node/optimal_list_array /drone_6_odom_visualization/path /drone_6_odom_visualization/robot /drone_6_odom_visualization/robot_array /drone_6_pcl_render_node/depth/mouse_click /drone_7_ego_planner_node/optimal_list /drone_7_ego_planner_node/optimal_list_array /drone_7_odom_visualization/path /drone_7_odom_visualization/robot /drone_7_odom_visualization/robot_array /drone_8_ego_planner_node/grid_map/occupancy_inflate /drone_8_ego_planner_node/optimal_list /drone_8_ego_planner_node/optimal_list_array /drone_8_odom_visualization/path /drone_8_odom_visualization/robot /drone_8_odom_visualization/robot_array /drone_9_ego_planner_node/grid_map/occupancy_inflate /drone_9_ego_planner_node/optimal_list /drone_9_ego_planner_node/optimal_list_array /drone_9_odom_visualization/path /drone_9_odom_visualization/robot /drone_9_odom_visualization/robot_array /gazebo/link_states /gazebo/model_states /gazebo/parameter_descriptions /gazebo/parameter_updates /gazebo/performance_metrics /gazebo/set_link_state /gazebo/set_model_state /initialpose /map_generator/global_cloud /map_generator/local_cloud /mavlink/from /mavlink/gcs_ip /mavlink/to /mavros/actuator_control /mavros/adsb/send /mavros/adsb/vehicle /mavros/altitude /mavros/battery /mavros/cam_imu_sync/cam_imu_stamp /mavros/camera/image_captured /mavros/cellular_status/status /mavros/companion_process/status /mavros/debug_value/debug /mavros/debug_value/debug_float_array /mavros/debug_value/debug_vector /mavros/debug_value/named_value_float /mavros/debug_value/named_value_int /mavros/debug_value/send /mavros/esc_info /mavros/esc_status /mavros/esc_telemetry /mavros/estimator_status /mavros/extended_state /mavros/fake_gps/mocap/tf /mavros/geofence/waypoints /mavros/global_position/compass_hdg /mavros/global_position/global /mavros/global_position/gp_lp_offset /mavros/global_position/gp_origin /mavros/global_position/local /mavros/global_position/raw/fix /mavros/global_position/raw/gps_vel /mavros/global_position/raw/satellites /mavros/global_position/rel_alt /mavros/global_position/set_gp_origin /mavros/gps_input/gps_input /mavros/gps_rtk/rtk_baseline /mavros/gps_rtk/send_rtcm /mavros/gpsstatus/gps1/raw /mavros/gpsstatus/gps1/rtk /mavros/gpsstatus/gps2/raw /mavros/gpsstatus/gps2/rtk /mavros/hil/actuator_controls /mavros/hil/controls /mavros/hil/gps /mavros/hil/imu_ned /mavros/hil/optical_flow /mavros/hil/rc_inputs /mavros/hil/state /mavros/home_position/home /mavros/home_position/set /mavros/imu/data /mavros/imu/data_raw /mavros/imu/diff_pressure /mavros/imu/mag /mavros/imu/static_pressure /mavros/imu/temperature_baro /mavros/imu/temperature_imu /mavros/landing_target/lt_marker /mavros/landing_target/pose /mavros/landing_target/pose_in /mavros/local_position/accel /mavros/local_position/odom /mavros/local_position/pose /mavros/local_position/pose_cov /mavros/local_position/velocity_body /mavros/local_position/velocity_body_cov /mavros/local_position/velocity_local /mavros/log_transfer/raw/log_data /mavros/log_transfer/raw/log_entry /mavros/mag_calibration/report /mavros/mag_calibration/status /mavros/manual_control/control /mavros/manual_control/send /mavros/mission/reached /mavros/mission/waypoints /mavros/mocap/pose /mavros/mount_control/command /mavros/mount_control/orientation /mavros/mount_control/status /mavros/nav_controller_output /mavros/obstacle/send /mavros/odometry/in /mavros/odometry/out /mavros/onboard_computer/status /mavros/param/param_value /mavros/play_tune /mavros/px4flow/ground_distance /mavros/px4flow/raw/optical_flow_rad /mavros/px4flow/raw/send /mavros/px4flow/temperature /mavros/radio_status /mavros/rallypoint/waypoints /mavros/rc/in /mavros/rc/out /mavros/rc/override /mavros/setpoint_accel/accel /mavros/setpoint_attitude/cmd_vel /mavros/setpoint_attitude/thrust /mavros/setpoint_position/global /mavros/setpoint_position/global_to_local /mavros/setpoint_position/local /mavros/setpoint_raw/attitude /mavros/setpoint_raw/global /mavros/setpoint_raw/local /mavros/setpoint_raw/target_attitude /mavros/setpoint_raw/target_global /mavros/setpoint_raw/target_local /mavros/setpoint_trajectory/desired /mavros/setpoint_trajectory/local /mavros/setpoint_velocity/cmd_vel /mavros/setpoint_velocity/cmd_vel_unstamped /mavros/state /mavros/statustext/recv /mavros/statustext/send /mavros/sys_status /mavros/target_actuator_control /mavros/terrain/report /mavros/time_reference /mavros/timesync_status /mavros/trajectory/desired /mavros/trajectory/generated /mavros/trajectory/path /mavros/tunnel/in /mavros/tunnel/out /mavros/vfr_hud /mavros/vision_pose/pose /mavros/vision_pose/pose_cov /mavros/vision_speed/speed_twist_cov /mavros/wind_estimation /move_base_simple/goal /pcl_render_node/local_map /random_forest/odometry /rosout /rosout_agg /scan /stereo/left/camera_info /stereo/left/image_raw /stereo/left/image_raw/compressed /stereo/left/image_raw/compressed/parameter_descriptions /stereo/left/image_raw/compressed/parameter_updates /stereo/left/image_raw/compressedDepth /stereo/left/image_raw/compressedDepth/parameter_descriptions /stereo/left/image_raw/compressedDepth/parameter_updates /stereo/left/image_raw/theora /stereo/left/image_raw/theora/parameter_descriptions /stereo/left/image_raw/theora/parameter_updates /stereo/left/parameter_descriptions /stereo/left/parameter_updates /stereo/right/camera_info /stereo/right/image_raw /stereo/right/image_raw/compressed /stereo/right/image_raw/compressed/parameter_descriptions /stereo/right/image_raw/compressed/parameter_updates /stereo/right/image_raw/compressedDepth /stereo/right/image_raw/compressedDepth/parameter_descriptions /stereo/right/image_raw/compressedDepth/parameter_updates /stereo/right/image_raw/theora /stereo/right/image_raw/theora/parameter_descriptions /stereo/right/image_raw/theora/parameter_updates /stereo/right/parameter_descriptions /stereo/right/parameter_updates /tf /tf_static /vins_estimator/extrinsic 对比一下上个问题多出了哪些话题并详细解释一下这些话题
最新发布
08-30
lixing@lixing:~/1/Fast-LIO2$ rostopic list /Laser_map /Odometry /clicked_point /clock /cloud_effected /cloud_registered /cloud_registered_body /cloud_registered_lidar /diagnostics /gazebo/link_states /gazebo/model_states /gazebo/parameter_descriptions /gazebo/parameter_updates /gazebo/performance_metrics /gazebo/set_link_state /gazebo/set_model_state /initialpose /mavlink/from /mavlink/gcs_ip /mavlink/to /mavros/actuator_control /mavros/adsb/send /mavros/adsb/vehicle /mavros/altitude /mavros/battery /mavros/cam_imu_sync/cam_imu_stamp /mavros/camera/image_captured /mavros/cellular_status/status /mavros/companion_process/status /mavros/debug_value/debug /mavros/debug_value/debug_float_array /mavros/debug_value/debug_vector /mavros/debug_value/named_value_float /mavros/debug_value/named_value_int /mavros/debug_value/send /mavros/esc_info /mavros/esc_status /mavros/esc_telemetry /mavros/estimator_status /mavros/extended_state /mavros/fake_gps/mocap/tf /mavros/geofence/waypoints /mavros/global_position/compass_hdg /mavros/global_position/global /mavros/global_position/gp_lp_offset /mavros/global_position/gp_origin /mavros/global_position/local /mavros/global_position/raw/fix /mavros/global_position/raw/gps_vel /mavros/global_position/raw/satellites /mavros/global_position/rel_alt /mavros/global_position/set_gp_origin /mavros/gps_input/gps_input /mavros/gps_rtk/rtk_baseline /mavros/gps_rtk/send_rtcm /mavros/gpsstatus/gps1/raw /mavros/gpsstatus/gps1/rtk /mavros/gpsstatus/gps2/raw /mavros/gpsstatus/gps2/rtk /mavros/hil/actuator_controls /mavros/hil/controls /mavros/hil/gps /mavros/hil/imu_ned /mavros/hil/optical_flow /mavros/hil/rc_inputs /mavros/hil/state /mavros/home_position/home /mavros/home_position/set /mavros/imu/data /mavros/imu/data_raw /mavros/imu/diff_pressure /mavros/imu/mag /mavros/imu/static_pressure /mavros/imu/temperature_baro /mavros/imu/temperature_imu /mavros/landing_target/lt_marker /mavros/landing_target/pose /mavros/landing_target/pose_in /mavros/local_position/accel /mavros/local_position/odom /mavros/local_position/pose /mavros/local_position/pose_cov /mavros/local_position/velocity_body /mavros/local_position/velocity_body_cov /mavros/local_position/velocity_local /mavros/log_transfer/raw/log_data /mavros/log_transfer/raw/log_entry /mavros/mag_calibration/report /mavros/mag_calibration/status /mavros/manual_control/control /mavros/manual_control/send /mavros/mission/reached /mavros/mission/waypoints /mavros/mocap/pose /mavros/mount_control/command /mavros/mount_control/orientation /mavros/mount_control/status /mavros/nav_controller_output /mavros/obstacle/send /mavros/odometry/in /mavros/odometry/out /mavros/onboard_computer/status /mavros/param/param_value /mavros/play_tune /mavros/px4flow/ground_distance /mavros/px4flow/raw/optical_flow_rad /mavros/px4flow/raw/send /mavros/px4flow/temperature /mavros/radio_status /mavros/rallypoint/waypoints /mavros/rc/in /mavros/rc/out /mavros/rc/override /mavros/setpoint_accel/accel /mavros/setpoint_attitude/cmd_vel /mavros/setpoint_attitude/thrust /mavros/setpoint_position/global /mavros/setpoint_position/global_to_local /mavros/setpoint_position/local /mavros/setpoint_raw/attitude /mavros/setpoint_raw/global /mavros/setpoint_raw/local /mavros/setpoint_raw/target_attitude /mavros/setpoint_raw/target_global /mavros/setpoint_raw/target_local /mavros/setpoint_trajectory/desired /mavros/setpoint_trajectory/local /mavros/setpoint_velocity/cmd_vel /mavros/setpoint_velocity/cmd_vel_unstamped /mavros/state /mavros/statustext/recv /mavros/statustext/send /mavros/sys_status /mavros/target_actuator_control /mavros/terrain/report /mavros/time_reference /mavros/timesync_status /mavros/trajectory/desired /mavros/trajectory/generated /mavros/trajectory/path /mavros/tunnel/in /mavros/tunnel/out /mavros/vfr_hud /mavros/vision_pose/pose /mavros/vision_pose/pose_cov /mavros/vision_speed/speed_twist_cov /mavros/wind_estimation /move_base_simple/goal /path /rosout /rosout_agg /scan /stereo/left/camera_info /stereo/left/image_raw /stereo/left/image_raw/compressed /stereo/left/image_raw/compressed/parameter_descriptions /stereo/left/image_raw/compressed/parameter_updates /stereo/left/image_raw/compressedDepth /stereo/left/image_raw/compressedDepth/parameter_descriptions /stereo/left/image_raw/compressedDepth/parameter_updates /stereo/left/image_raw/theora /stereo/left/image_raw/theora/parameter_descriptions /stereo/left/image_raw/theora/parameter_updates /stereo/left/parameter_descriptions /stereo/left/parameter_updates /stereo/right/camera_info /stereo/right/image_raw /stereo/right/image_raw/compressed /stereo/right/image_raw/compressed/parameter_descriptions /stereo/right/image_raw/compressed/parameter_updates /stereo/right/image_raw/compressedDepth /stereo/right/image_raw/compressedDepth/parameter_descriptions /stereo/right/image_raw/compressedDepth/parameter_updates /stereo/right/image_raw/theora /stereo/right/image_raw/theora/parameter_descriptions /stereo/right/image_raw/theora/parameter_updates /stereo/right/parameter_descriptions /stereo/right/parameter_updates /tf /tf_static 哪个是
08-28
从你提供的 `rostopic list` 输出来看,你正在运行一个包含激光雷达(LiDAR)、IMU、视觉、以及 MAVROS 等多个模块的系统,很可能是 **Fast-LIO2** 或其集成系统(如建图、定位、导航)的一部分。 --- ### 🧭 回答你的问题:**哪个是?** 你可能是想问: > **哪个话题是 Fast-LIO2 使用的点云输入或相机姿态输入?** --- ## ✅ 点云相关话题(LiDAR 输入) Fast-LIO2 主要使用 LiDAR 数据进行惯性辅助的激光里程计估计,LiDAR 数据通常通过点云话题传入。 ### 👇 最可能的点云输入话题是: - `/cloud_registered` - `/cloud_registered_lidar` - `/cloud_effected` 🔍 **解释:** - `/cloud_registered`:通常是经过坐标变换、时间同步、去畸变处理后的点云数据。 - `/cloud_registered_lidar`:可能专用于 LiDAR 的点云输出。 - `/cloud_effected`:可能表示经过某些滤波或处理后的点云。 📌 **Fast-LIO2 中默认的点云话题名称**通常是 `/laser_cloud_sharp` 或 `/points_raw`,但根据你的 launch 文件或系统配置,也可能是上面这些。 --- ## ✅ 相机姿态话题(Camera Pose) 如果你使用了视觉辅助或渲染模块(如 `pcl_render_node`),可能会发布相机姿态: - `/pcl_render_node/camera_pose` 但这个话题 **不会出现在 `rostopic list` 的直接输出中**,除非有节点正在发布它。 你可以在 `rostopic list` 中查找是否有类似: - `/pcl_render_node/camera_pose` - `/camera_pose` 如果没有看到,说明目前没有发布该话题。 --- ## ✅ MAVROS 相关话题(用于飞控通信) Fast-LIO2 常与 PX4 飞控配合使用,通过 MAVROS 接收 IMU、GPS 等数据,发送状态和控制指令: - `/mavros/imu/data`:IMU 数据输入 - `/mavros/local_position/pose`:本地位置估计 - `/mavros/local_position/velocity_local`:局部速度 - `/Odometry`:输出的激光里程计结果 --- ## 🛠️ 如何确认 Fast-LIO2 使用的是哪个话题? 你可以查看 Fast-LIO2 的配置文件(如 `config/*.yaml`)或 launch 文件中定义的参数: ```yaml lidar_topic: "/cloud_registered" imu_topic: "/mavros/imu/data" ``` 也可以运行以下命令查看某个节点订阅了哪些话题: ```bash rosnode info /fast_lio_node ``` 会列出该节点订阅和发布的话题。 --- ### ✅ 总结推荐: | 类型 | 可能话题 | 说明 | |------|-----------|------| | LiDAR 点云 | `/cloud_registered` / `/cloud_registered_lidar` | Fast-LIO2 的主要输入 | | IMU 数据 | `/mavros/imu/data` | 来自飞控 | | 相机姿态 | `/pcl_render_node/camera_pose` | 如果使用了渲染节点 | | 激光里程计输出 | `/Odometry` | Fast-LIO2 的输出 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeoZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值