< >
Home » walking机器人仿真教程_视频版 » walking机器人仿真教程-室外小院进行gps定位和导航

walking机器人仿真教程-室外小院进行gps定位和导航

说明

  • 介绍如何通过robot_localization包融合odom+imu+gps进行控制

准备数据

  • 1.计算您所在位置的磁偏角的弧度值
  • 获取经纬度,方法1:通过gps传感器,方法2:利用百度拾取坐标系统
  • 百度系统上获取数据是:经度,维度。假设经纬度为 113.155134,23.01242
  • 打开磁偏角计算网站, 输入您的纬度和经度,然后单击“计算”。

请输入图片描述

  • 上面获取是8.48° E
  • 获取的磁偏角为度.分格式转换为度的十进制格式
8 + 48/60 = 8.8 度
  • 在转变为弧度值公式: A2=A1*π/180
8.8 * 3.14 / 180 = 0.1535 弧度
  • 2.获取海拔高度
  • 利用地址,从网站工具查询海拔, 假设1米
  • 3.gazebo的方位和坐标轴关系
x = East
y = North
z = Up
    1. 修改smalltown_gps.world里面的<spherical_coordinates>下的经纬度
  • 文件位于aiwalking_ws/src/walking_application/worlds/smalltown_gps.world
  • 相关内容如下:
    <spherical_coordinates>
      <surface_model>EARTH_WGS84</surface_model>
      <latitude_deg>33.83</latitude_deg>
      <longitude_deg>-84.42</longitude_deg>
      <elevation>254.99568</elevation>
      <!-- currently gazebo has a bug: instead of outputing lat, long, altitude in ENU
      (x = East, y = North and z = Up) as the default configurations, it's outputting (-E)(-N)U,
      therefore we rotate the default frame 180 so that it would go back to ENU -->
      <heading_deg>180</heading_deg>
    </spherical_coordinates>
  • 根据上面获取的数据修改经纬度和海拔

定位和导航步骤:

  • 1.加载gazebo环境和启动仿真
#先执行
. /usr/share/gazebo/setup.bash 
#再执行
ros2 launch walking_application gps_gazebo.launch.py
  • gazebo效果图:

请输入图片描述

  • 仿真已经整合的gps传感器,发布相应的gps数据
  • 查看话题列表
$ ros2 topic list
/clock
/cmd_vel #速度话题
/gps/fix #gps数据
/imu/data #imu数据
/joint_states
/parameter_events
/performance_metrics
/rosout
/scan  #雷达数据
/ultrasonic_sensor_1 #超声波数据
/wheel/odometry  #里程数据
  • 为navsat_transform节点设置GPS的原点
ros2 service call /datum robot_localization/srv/SetDatum '{geo_pose: {position: {latitude: 23.01242, longitude: 113.155134, altitude: 1}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}}'
  • 控制小车
rqt_robot_steering
  • 弹出一个控制界面

请输入图片描述

  • 上滑条控制前进后退,下滑条控制左右转

  • 2.启动定位

ros2 launch walking_application gps_localization.launch.py
  • 查看话题列表
$ ros2 topic list
/clock
/cmd_vel
/diagnostics
/gps/filtered  #经过扩展卡尔曼滤波器(EKF)处理的gps数据
/gps/fix       #原始gps数据
/imu/data
/initialpose
/joint_states
/odometry/global  #基于map坐标系融合odom+GPS+IMU并通过扩展卡尔曼滤波器处理的位姿信息
/odometry/gps     #基于map坐标系通过扩展卡尔曼滤波器处理之前的位姿信息
/odometry/local   #基于odom坐标系融合odom+imu的位姿信息
/parameter_events
/performance_metrics
/robot_description
/rosout
/scan
/tf
/tf_static
/ultrasonic_sensor_1
/wheel/odometry  #原始里程信息
  • 可以分别查看上述话题的具体内容

  • 3.启动导航

ros2 launch walking_application gps_navigation.launch.py
  • 查看TF树
ros2 run rqt_tf_tree rqt_tf_tree
  • 效果图

请输入图片描述

  • rviz效果图

请输入图片描述

  • 通过点击nav2 gaol按钮,再rviz上指定目标点进行即可进行导航

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: walking机器人仿真教程