习题4
主要内容:
- ROS bag
- rqt_multiplot
- RViz
- ROS time
- ROS launch
习题:
本次练习的目标是处理真实的Husky机器人上记录的数据。记录的bag文件包含车轮里程计、惯性测量单元(IMU)和激光扫描测量 等传感器的测量数据。 本节的任务是使用这些原始传感器数据所提供的信息通过状态估计节点来定位机器人,该节点采用扩展卡尔曼滤波器(EKF)。与此相同的定位节点在仿真也同样在启动Husky的时候运行。使用rqt_multiplot查看定位信息的输出,并在RViz中可视化激光数据。
1. 从上次练习编写的启动(launch)文件开始。检查节点/ekf_localization的功能,它订阅和发布哪些内容呢?更多信息查看:http://docs.ros.org/kinetic/api/robot_localization/html/index.html。
A:
2. 接着启动上次练习中的控制器。使用rqt_multiplot(讲座3,幻灯片11页)绘制仿真机器人在xy平面的路径(提示:使用主题/odometry/filtered)。
A:
3. 下载在课程网站上提供的ros数据包文件husky_navigation.bag,使用rosbag info查看其中的内容。
A:
relaybotbox@relaybotbox:~$ rosbag info husky_navigation.bag
path: husky_navigation.bag
version: 2.0
duration: 60.0s
start: Feb 09 2018 00:34:11.00 (1518107651.00)
end: Feb 09 2018 00:35:10.00 (1518107711.00)
size: 294.7 MB
messages: 3563
compression: none [301/301 chunks]
types: nav_msgs/Odometry [cd5e73d190d741a2f92e81eda573aca7]
sensor_msgs/Imu [6a62c6daae103f4ff57a132d6f95cec2]
sensor_msgs/JointState [3066dcd76a6cfaef579bd0f34173e9fd]
sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics: /husky_velocity_controller/odom 600 msgs : nav_msgs/Odometry
/imu/data 1190 msgs : sensor_msgs/Imu
/joint_states 1172 msgs : sensor_msgs/JointState
/velodyne/assembled_cloud_filtered 601 msgs : sensor_msgs/PointCloud2
4. 编写一个启动文件,启动一个kf_localization_node节点订阅数据包文件中提供的主题。通过仿真从相同的配置文件中加载参数(提示:配置文件localization.yaml可以通过roscd husky_control/config)。
A:
launch:
<?xml version="1.0"?>
<launch>
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization">
<rosparam command="load" file="$(find husky_control)/config/localization.yaml" />
</node>
<param name="use_sim_time" value="true"/>
<!-- Load Husky model-->
<arg name="laser_enabled" default="$(optenv HUSKY_LMS1XX_ENABLED false)"/>
<arg name="ur5_enabled" default="$(optenv HUSKY_UR5_ENABLED false)"/>
<arg name="urdf_extras" default="$(optenv HUSKY_URDF_EXTRAS)"/>
<arg name="kinect_enabled" default="false"/>
<!-- Load robot description -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<include file="$(find husky_description)/launch/description.launch" >
<arg name="laser_enabled" default="$(arg laser_enabled)"/>
<arg name="kinect_enabled" default="$(arg kinect_enabled)"/>
<arg name="urdf_extras" default="$(arg urdf_extras)"/>
</include>
<node name="rviz" pkg="rviz" type="rviz" />
</launch>
5. 使用rqt_multiplot在xy平面绘制机器人存档数据的路径。
在上面已经绘制过,不在重复。
- 提示:注意设置参数/use_sim_time为true:参考:http://wiki.ros.org/clock(讲座4,13页)
- 提示:使用命令 rosbag play mydata.bag --clock读取数据包文件,这样可以发布记录数据的时间。参考:http://wiki.ros.org/rosbag/commandline(讲座4,14页)
A:
6. 在rviz中使用TF markers可视化husky的运动。在启动文件中添加robot_state_publisher节点并加载husky机器人的描述至参数服务器。这样,就可以在rviz中可视化husky。(提示:使用在husky_control功能包中的control.launch作为参考)
A:
7. 这个数据记录包同样包括来自Velodyne LiDAR的激光数据。在rviz中的可视化点云同样会随着机器人的运动而变化。
A:
----
评分标准:
1. 使用rqt_multiplot在xy平面绘制仿真husky的路径。(30%)
2. 使用rqt_multiplot在xy平面绘制husky数据的路径。(40%)
3. 在RViz中可视化来自Velodyne LiDAR的点云。 (30%)
~End~