导航过程中的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