一、项目准备
1.1 安装Rviz工具
首先要先学会在虚拟机下打开摄像头:详情参考ubuntu中opencv调用摄像头
1.2 安装相关功能包
sudo apt-get install ros-melodic-uvc-camera
sudo apt-get install ros-melodic-image-*
sudo apt-get install ros-melodic-rqt-image-view
1.3 启动核心ROS程序
roscore
1.4 另一个终端运行uvc_camera节点
rosrun uvc_camera uvc_camera_node
1.5 再开终端,查看话题消息
Rostopic list
1.6 打印相机消息
rostopic echo /camera_info
1.7 开启Rviz
rviz
二、显示摄像头视频
2.1 添加image,将image Topic的值更改为/image_raw.
三、搭建 gazebo 环境
3.1 运行gazebo仿真软件
gazebo
3.2 新建gazebo机器人仿真工具包
cd ~/catkin_ws/src
catkin_create_pkg mbot_gazebo std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
3.3 创建工程文件
cd ~/catkin_ws/src/mbot_gazebo
mkdir launch
cd launch
touch gazebo_empty.launch
gedit gazebo_empty.launch
向gazebo_empty.launch文件中添加如下内容
<launch>
<!-- 设置launch文件的参数 -->
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
1.4 修改CMakeLists.txt文件
cd ~/catkin_ws/src/mbot_gazebo
gedit CMakeLists.txt
向find_package中添加:
gazebo_plugins
gazebo_ros
gazebo_ros_control
1.5 修改package.xml文件内容
cd ~/catkin_ws/src/mbot_gazebo
gedit package.xml
添加如下:
<build_depend>gazebo_plugins</build_depend>
<build_depend>gazebo_ros</build_depend>
<build_depend>gazebo_ros_control</build_depend>
<build_export_depend>gazebo_plugins</build_export_depend>
<build_export_depend>gazebo_ros</build_export_depend>
<build_export_depend>gazebo_ros_control</build_export_depend>
<exec_depend>gazebo_plugins</exec_depend>
<exec_depend>gazebo_ros</exec_depend>
<exec_depend>gazebo_ros_control</exec_depend>
1.6 程序编译
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
1.7 运行gazebo进行机器人仿真
roslaunch mbot_gazebo gazebo_empty.launch
可以去下载一个机器人模型:https://download.csdn.net/download/qq_42451251/12344221
也可以自己建一个模型ROS——URDF机器人建模
正常情况下,应该包含两个包
重新执行第6步和第7步的命令:
四、搭建gazebo传感器仿真环境,并通过Rviz数据显示
4.1 提前下载gazebo的仿真模型
cd ~/.gazebo
mkdir models
cd ~/.gazebo/models
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
4.2 文件配置
cd ~/catkin_ws/src/mbot_gazebo
mkdir worlds
cd worlds
touch playground.world
gedit playground.world
创建room.world文件
touch room.world
gedit room.world
4.3 搭建传感器camera的环境
cd ~/catkin_ws/src/mbot_gazebo/launch
touch view_mbot_with_camera_gazebo.launch
gedit view_mbot_with_camera_gazebo.launch
向view_mbot_with_camera_gazebo.launch中添加:
<launch>
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world_name)" />
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_camera_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
运行文件
cd ~/catkin_ws
roslaunch mbot_gazebo view_mbot_with_camera_gazebo.launch
打开Rviz,进行摄像头显示
cd ~/catkin_ws
rosrun rviz rviz
4.4 搭建kinect环境
cd ~/catkin_ws/src/mbot_gazebo/launch
touch view_mbot_with_kinect_gazebo.launch
gedit view_mbot_with_kinect_gazebo.launch
向 view_mbot_with_kinect_gazebo.launch 添加如下内容:
<launch>
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world_name)" />
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_kinect_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
运行文件:
cd catkin_ws
rosrun rviz rviz
先点击 “Add”,再添加 Image 和 PointCloud2,然后进行如下操作:
4.5 搭建传感器Lidar的环境
cd ~/catkin_ws/src/mbot_gazebo/launch
touch view_mbot_with_laser_gazebo.launch
gedit view_mbot_with_laser_gazebo.launch
向 view_mbot_with_laser_gazebo.launch 添加如下内容:
<launch>
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world_name)" />
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_laser_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
运行文件
cd ~/catkin_ws
roslaunch mbot_gazebo view_mbot_with_laser_gazebo.launch
在运行Rviz
cd catkin_ws
rosrun rviz rviz
先点击 “Add”,再添加 LaserScan,然后进行如下操作:
4.6 键盘操作
新建一个功能包mbot_teleop
catkin_make
source ~/catkin_ws/devel/setup.bash
先搭建环境
cd ~/catkin_ws
roslaunch mbot_gazebo view_mbot_with_camera_gazebo.launch
最后运行就好了
五、资料引用
ROS中Rviz工具的使用——显示摄像头视频显示
Gazebo机器人仿真 —— 通过Rviz显示传感器(camera、kinect、Lidar)采集信息
ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示