无人机路径规划2 vins_fusion + rtab_map学习

  • Post author:
  • Post category:其他


导航架构



导航过程中的tf

Map -> odom -> base_footprint -> base_link

odom里程计 odom tf

  • base_footprint -> base_link :

    robot_state_publisher发布静态的tf关系 baselink基线 basefootprint 地面投影
  • odom -> base_footprint :

    机器人驱动(真机)发布;gazebo(仿真)发布
  • map -> odom :

    amcl发布 因为 odom -> base_footprint 的数据已知,实际上转换为map -> base_footprint的关系(可以看作定位)

    move_base

    输入:目标位置 ‘move_base_simple/goal’(topic)geometry_msgs/PoseStamped(数据)

    输出:速度与角速度 ‘cmd_vel’ geometry_msgs/Twist



ros当中存在的slam

  • Gmapping


    https://zhuanlan.zhihu.com/p/57566566


    需要利用二维雷达和里程计数据进行定位和建图

  • Hector_slam

    不需要里程计数据,只需要激光雷达数据便可以建图,建图效果不如gmapping

    无人机一般比较难以获取里程计数据

    打滑很严重

  • cartographer

    2016谷歌推出的slam,至少需要激光数据,可接入里程计、imu数据,支持二维和三维建图

  • 其他slam

    karto_slam rdbdslam orb_slam rbatslam



基本ros

  • roslaunch

    .launch文件写法

    node name=‘名字’ pkg=‘包’ type=‘可执行文件’ args$(find pkg)找包的绝对路径
  • gazebo

    教程:gezebo tutorials

    支持模型 sdf xacro



常用地图基础知识


https://blog.csdn.net/Night___Raid/article/details/110917284



topic话题学习

# cmd_vel_flu Twist
linear: 
  x: 0.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: 0.0


回调函数


subscriber读取到数据后就会将它放置与自己的消息队列中,等待回调函数读取


常用MAVROS话题和服务



https://zhuanlan.zhihu.com/p/364872655

  • 系统状态
#消息名称:mavros/state
#头文件:mavros_msgs/State.h
string mode #当前飞行模式
uint8 system_status #系统状态
  • GPS数据
#消息名称:mavros/global_position/global
#头文件:sensor_msgs/NavSatFix.h
float64 latitude
float64 longitude
float64 altitude
  • 本地位置
#消息名称:mavros/local_position/pose
#头文件:geometry_msgs/PoseStamped.h
mavros_pos.pose.position.x
mavros_pos.pose.position.y
mavros_pos.pose.position.z
  • 三轴速度
消息名称:mavros/local_position/velocity
头文件:geometry_msgs/TwistStamped.h



ego-planner

tju@tju:~$ rospack find ego_planner
/home/tju/catkin_ws/src/ego_planner/plan_manage

ros advertise解释


http://www.bubuko.com/infodetail-1167834.html

launch文件基本写法


https://www.cnblogs.com/zjiaxing/p/5542614.html



https://blog.csdn.net/Csdn_Darry/article/details/123616969


single_uav.launch 启动 run_in_xtdrone.launch 并传递目标点位置


run_in_xtdrone.launch 启动 advanced_param_xtdrone.xml并传递各种基本参数

同时启动traj_server节点


advanced_param_xtdrone.xml 接收参数并启动ego_planner_node节点,同时将参数传入ego_planner_node节点(可执行文件)中

fsm/waypoint0_xyz

我的理解 arg在ros launch文件中传递参数

param将配置文件中的参数传递给可执行程序



Vins-Fusion

里程计 Odometry

里程计方法分为五种主要类型,即车轮、惯性、激光、雷达和视觉,里程计为机器人提供实时的位姿信息。


– vins_estimator节点发布

rostopic echo vins_estimator/camera_pose

header: 
  seq: 2520
  stamp: 
    secs: 1065
    nsecs: 920000000
  frame_id: "world"
child_frame_id: ''
pose: 
  pose: 
    position: 
      x: -228686.381876
      y: 211434.227591
      z: -555191.626441
    orientation: 
      x: 0.977557370048
      y: -0.0437484369776
      z: 0.0862145049815
      w: -0.18717564387
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist: //线速度 角速度
  twist: 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

rostopic echo vins_estimator/odometry

header: 
  seq: 2369
  stamp: 
    secs: 1014
    nsecs: 344000000
  frame_id: "world"
child_frame_id: "world"
pose: 
  pose: 
    position: 
      x: -261760.076531
      y: 179698.330113
      z: -436151.786969
    orientation: 
      x: -0.629877927841
      y: 0.456626355737
      z: 0.0766013686274
      w: 0.623601152653
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist: 
  twist: 
    linear: 
      x: 517.654402467
      y: 504.625238758
      z: -2095.96428179
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

rostopic echo vins_estimator/extrinsic

header: 
  seq: 2898
  stamp: 
    secs: 1188
    nsecs: 872000000
  frame_id: "world"
child_frame_id: ''
pose: 
  pose: 
    position: 
      x: 0.0
      y: 0.12
      z: -0.3
    orientation: 
      x: 0.5
      y: -0.5
      z: 0.5
      w: -0.5
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist: 
  twist: 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

rostopic echo tf

transforms: 
  - 
    header: 
      seq: 0
      stamp: 
        secs: 1251
        nsecs: 160000000
      frame_id: "map"
    child_frame_id: "world"
    transform: 
      translation: 
        x: 7.03125
        y: -5.46875
        z: 16.75
      rotation: 
        x: -1.04010105126e-05
        y: -4.54392284125e-06
        z: 1.76578760135e-06
        w: 0.999999999934

rostopic echo iris_0/mavros/vision_pose/pose

header: 
  seq: 5337
  stamp: 
    secs: 243
    nsecs: 104000000
  frame_id: "world"
pose: 
  position: 
    x: 23.7259211461
    y: 44.5249759892
    z: 2.07687730458
  orientation: 
    x: -0.0187094212641
    y: 0.0128923477025
    z: 0.7061055551
    w: 0.70774196568

rostopic echo tf_static

    header: 
      seq: 0
      stamp: 
        secs: 0
        nsecs:         0
      frame_id: "base_link"
    child_frame_id: "base_link_frd"
    transform: 
      translation: 
        x: 0.0
        y: 0.0
        z: 0.0
      rotation: 
        x: 1.0
        y: 0.0
        z: 0.0
        w: 6.12323399574e-17



版权声明:本文为dueen1123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。