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
- 修改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上指定目标点进行即可进行导航
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号