1、引言
RViz是ROS的一个可视化3D空间的工具,它用于帮助用户在ROS系统中导航、查看和交互。RViz可以显示来自各种ROS节点的信息,例如传感器数据、机器人的状态和路径等。通过RViz,用户可以以图形方式查看和交互各种ROS数据,非常直观便捷。
常见的一些用途:
机器人模型:可以在3D空间中查看机器人的模型,包括机器人的姿态、位置和速度等。
传感器数据:通过显示图像或点云数据,可以帮助用户查看机器人的周围环境。
路标:可以在地图上标记特定的点或对象,这些标记可以用于导航或其他应用。
路径规划:通过可视化路径规划机器人的轨迹,帮助用户更好地理解机器人的行为。
状态信息:例如电池电量、机器人当前的状态等。
2、安装与启动rviz
一般都是ROS自带的,如果没有自带的情况,可以自己单独再次安装,需要看自己系统版本来选择,我这里是Ubuntu18,所以就是melodic,如果是Ubuntu 20的版本,就选择修改为noetic
我们可以使用命令来查看ROS版本:printenv ROS_DISTRO
确定了版本就可以安装了:sudo apt-get install ros-melodic-rviz
对于安装ROS的可以查阅:Ubuntu18.04版本安装ROS及出现错误的处理方法
安装好了之后,我们接着上一篇文章的内容,分别开启多个终端:
roscore
cd ~/mywanderbot_ws/src/mywanderbot/src
python key_publisher.py
cd ~/mywanderbot_ws/src/mywanderbot/src
./keys_to_twist_ramps.py _linear_scale:=0.5 _angular_scale:=1.0 _linear_accel:=1.0 _angular_accel:=1.0
或者直接运行launch文件:roslaunch mywanderbot test.launch
然后我们启动机器人:roslaunch turtlebot3_gazebo turtlebot3_world.launch
最后我们启动rviz:rosrun rviz rviz
3、RobotModel错误
开启rviz工具之后,我们先来添加一个机器人,在界面的左下角的位置,点击Add,在弹出框中选择RobotModel,如下图:
我们发现Add进来的RobotModel是红颜色高亮的,状态是错误Status:Error,右边的机器人是白色的,如下图:
解决方法:
sudo apt-get install unicode sudo apt-get install ros-melodic-joint-state-publisher-gui
安装好了之后,重启ros之后再打开:rosrun rviz rviz
其中melodic取决于Ubuntu版本(本机是Ubuntu18)不同而不同,我们在启动roscore等地方也是可以看到的,还可以使用参数来获取:rosparam get /rosdistro
4、No transform错误
上面选择坐标系之后,如果问题还是没有解决,我们接下来看下里面的错误提示信息,如下图:
No transform from [base_link] to [base_footprint]
解决方法,分别启动下面两个节点:
rosrun joint_state_publisher joint_state_publisher
rosrun robot_state_publisher robot_state_publisher
一个是发布关节状态信息JointState给机器人:rosmsg show JointState
[sensor_msgs/JointState]:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
string[] name
float64[] position
float64[] velocity
float64[] effort
另一个就是将URDF以及接收到的位姿,通过运动学的计算,使用tf进行发布。
当然这种启动节点的方法,我们可以将其写入到我们的test.launch文件里面:
cd ~/mywanderbot_ws/src/mywanderbot/launch
gedit test.launch
<launch>
<node name="key_publisher" pkg="mywanderbot" type="key_publisher.py" respawn="false" output="screen" />
<node name="keys_to_twist_ramps" pkg="mywanderbot" type="keys_to_twist_ramps.py" respawn="false" output="screen">
<param name="linear_scale" type="double" value="0.5" />
<param name="angular_scale" type="double" value="1.0" />
<param name="linear_accel" type="double" value="1.0" />
<param name="angular_accel" type="double" value="1.0" />
</node>
<include file="$(find turtlebot3_gazebo)/launch/turtlebot3_world.launch" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" />
</launch>
这样就方便很多了,只需要运行launch文件即可:roslaunch mywanderbot test.launch
其中需要注意的是在新增的节点之前,需要通过include来先加载机器人的launch文件
<include file="$(find turtlebot3_gazebo)/launch/turtlebot3_world.launch" />
不然会出错。最后的节点就是rviz。运行之后,就一切正常了,如下图:
其他一些可视化工具,有兴趣的朋友可以查阅:机器人TF坐标系变换与一些可视化工具的应用