概述
使用单纯的雷达数据进行 2D 建立图像的时候,建图的效果和雷达的性能也有关系,雷达的扫描频率会随着小车的移动速度增大而变化,通过更改扫描的频率来更新栅格地图的完整性。
点击DEMO-LINK
所需要的环境
ubuntu 18.04 + ROS Melodic desktop full #ROS 别的可运行版本也可以
主要文件夹
mini_sim18_ws 这个文件夹是主要的工作空间,通过 roslaunch 执行 launch 文件去观察和控制 demo
original_neor_mini 这个文件夹是一个原始的 neor _ mini urdf 文件,你可以自己构建
pictures 全过程图片
下载编译
# 打开一个终端
git clone https://github.com/COONEO/neor_mini.git
cd neor_mini/mini_sim18_ws
rosdep install --from-paths src --ignore-src -r -y # 需要一定时间
# 编译空间
catkin_make # 如果失败了请重复
如果出现依赖错误的的话,类似于下面的情况
去文件夹里面将一下两个文件夹删除
然后重新编译
得到的编译结果会生成可执行文件(包含各个功能包的编译文件)
总共有五个功能包
neor_mini # 用 urdf 文件存储 neor mini 外观的说明
steer_drive_ros # 运动学 ROS 插件
steer_mini_gazebo # 存储发射文件的新近迷你模型可视化在露台
mini_gmapping # 存储启动文件和 gmap params 文件
mini_navigation # 存储启动文件和导航参数文件
执行 Demo
查看demo小车模型 Rviz
cd ~/neor_mini/mini_sim18_ws
source devel/setup.bash
roslaunch neor_mini display.launch
可以通过更改滑动条更改模型的脚点链接位置
查看仿真雷达模型 urdf
cd ~/neor_mini/mini_sim18_ws
source devel/setup.bash
roslaunch neor_mini display_gazebo_sensors.launch
同样也可以可以通过更改滑动条更改模型的脚点链接位置
gazebo 仿真 demo 测试
cd ~/neor_mini/mini_sim18_ws
source devel/setup.bash
roslaunch steer_mini_gazebo steer_mini_sim_sensors.launch
通过使用小窗口上的速度和方向控制小车,控制小车的运行轨迹
使用 neor_mini urdf 进行 Gmapping建图
cd ~/neor_mini/mini_sim18_ws
source devel/setup.bash
roslaunch mini_gmapping gmapping_steer_mini_sensors.launch
同样也是可以通过控制小窗上的键位来控制小车运动的位置
rf20_laser_odometry ROS 包可调参数
上述仓库的 demo 用来验证(根据相邻的雷达数据帧推算出本体的2D姿态数据,结合周围的测距数据,构建对应的栅格地图)。
- 订阅
scan (sensor_msgs/LaserScan) # 定于的雷达话题数据
tf (tf/tfMessage) # 静态的 tf 变换
- 发布
odom (nav_msgs/Odometry) # 估计的里程计话题数据输出
tf (tf/tfMessage) # 发布的odom坐标系和base_link坐标系之间的tf变换
同样的可以通过更改仿真中的扫描频率来降低性能和适用的范围
在 neor_mini/mini_sim18_ws/src/neor_mini/urdf
修改
![在这里插入图片描述](https://img-blog.csdnimg.cn/a26988a13d5946ab8c25913c8297b32e.png)
<!------------------- 修改部分 ----------------------->
<gazebo reference="laser_link">
<sensor type="ray" name="Top_laser_sensor">
<visualize>false</visualize> <!-- visual or unvisual laser ray :true or false-->
<update_rate>40</update_rate> <!-- 默认是 40,修改为 5 Hz -->
...
</gazebo>
<!---------------------------------------------------->
里程计的描述消息
# rf2o_laser_odometry 激光里程计节点配置
<node pkg="rf2o_laser_odometry" type="rf2o_laser_odometry_node" name="rf2o_laser_odometry" >
<param name="laser_scan_topic" value="/scan"/> # topic where the lidar scans are being published
<param name="odom_topic" value="/odom" /> # topic where tu publish the odometry estimations
<param name="publish_tf" value="true" /> # wheter or not to publish the tf::transform (base->odom)
<param name="base_frame_id" value="/base_link"/> # frame_id (tf) of the mobile robot base. A tf transform from the laser_frame to the base_frame is mandatory
<param name="odom_frame_id" value="/odom" /> # frame_id (tf) to publish the odometry estimations
<param name="init_pose_from_topic" value="" /> # (Odom topic) Leave empty to start at point (0,0)
<param name="freq" value="5.0"/> # Execution frequency.
<param name="verbose" value="true" />
</node>
脚本运行
根据上述描述完里程计之后,可以使用 gmapping 来建图,然后运行脚本
roslaunch mini_gmapping laser_odom_gmapping.launch
仓库示例中还有很多可以调用
例如:
雷达点云3D 建图
Updating…
????????????完结撒花????????????
????????@Redamancy????????
最后
以上就是灵巧皮卡丘为你收集整理的ROS 位置姿态Odometry仿真模拟(gmapping)的全部内容,希望文章能够帮你解决ROS 位置姿态Odometry仿真模拟(gmapping)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复