本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
今天说说Gazebo,有些同学没有学习RVIZ和Gazebo之前,分不清Gazebo和Rviz之间的区别,只道是Gazebo和RVIZ都能显示机器人模型。
昨天小鱼有说RVIZ2是什么:
文章中讲道RVIZ2是用来可视化数据的软件,核心要义是将数据展示出来(我们不生产数据只做数据的搬运工)。
而Gazebo是用于模拟真实环境生产数据的(我们不搬运数据只做数据的生产者)
所以Gazebo可以根据我们所提供的机器人模型文件,传感器配置参数,给机器人创造一个虚拟的环境,虚拟的电机和虚拟的传感器,并通过ROS/ROS2的相关功能包把传感器数据电机数据等发送出来(生产数据)。
这样我们就不用花一分钱,就拥有了各式各样的机器人和传感器(一万八的雷达,也只不过是用鼠标拖拽一下)。
Gazebo 是一个独立的应用程序,可以独立于 ROS 或 ROS 2 使用。
Gazebo与ROS 版本的集成是通过一组叫做gazebo_ros_pkgs
的包 完成的,gazebo_ros_pkgs
将Gazebo和ROS2连接起来。
gazebo_ros_pkgs不是一个包,是一堆包如下:
gazebo_ros_camera
发布ROS2图像gazebo_ros_diff_drive
通过ROS2控制和获取两轮驱动机器人的接口ROS1的插件迁移到ROS2进度:https://github.com/ros-simulation/gazebo_ros_pkgs/wiki
因为安装ROS2不会默认安装gazebo,所以我们要手动安装,一行命令很简单,如果提示找不到先去更新下ROS2的源。
sudo apt install gazebo11
一行代码全给装了,不差这点空间
sudo apt install ros-foxy-gazebo-*
一行代码搞定
gazebo /opt/ros/foxy/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world
然后你就可以看到一个死丑死丑的小车
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibN7SlCT-1636353020155)(http://fishros.com/d2lros2foxy/chapt6/6.5Gazebo%E4%BB%8B%E7%BB%8D/imgs/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6bG86aaZUk9T,size_20,color_FFFFFF,t_70,g_se,x_16.png)]
通过下面的指令可看到话题和话题的类型,把目光放到这个话题/demo/cmd_demo
,下面我们就通过这个话题来控制小车动起来。
ros2@ros2-TM1613R:~$ ros2 topic list -t
/clock [rosgraph_msgs/msg/Clock]
/demo/cmd_demo [geometry_msgs/msg/Twist]
/demo/odom_demo [nav_msgs/msg/Odometry]
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/tf [tf2_msgs/msg/TFMessage]
ros2 topic pub /demo/cmd_demo geometry_msgs/msg/Twist "{linear: {x: 0.2,y: 0,z: 0},angular: {x: 0,y: 0,z: 0}}"
然后就可以看到小车动了起来。
我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人