当前位置:   article > 正文

无人机路径规划2 vins_fusion + rtab_map学习_vins-fusion rtabmap

vins-fusion rtabmap

导航架构

导航过程中的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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

常用MAVROS话题和服务
https://zhuanlan.zhihu.com/p/364872655

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

ego-planner

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

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/979328
推荐阅读
  

闽ICP备14008679号