-
Notifications
You must be signed in to change notification settings - Fork 44
Workshop 7 2D3D Perception
From now on, you should start working on your assignment. The workshop tasks for this week, however, are directly relevant to your assignments and should help you with your individual developments. First, clone the repository in your workspace.
Run uol_cmp9767m_tutorial image_geometry_1.py node
which projects a 3D point from camera to image coordinates. What camera coordinates (x,y) correspond to the image borders of the Kinect sensor, assuming only points on the ground plane (z=0.5)?
Run uol_cmp9767m_tutorial image_geometry_2.py
node. Note the coordinates of the ground point specified in the robot frame (base_link
) transformed into the camera frame (kinect2_rgb_optical_frame
). Change the node such that the transform expresses the central ground point in the camera coordinates (0,0,0.5) in the robot frame. Compare the results.
Change the orientation of the Kinect camera such it faces forward pointing at the ground at 45 degree angle (see urdf/sensors.xarco
file and kinect2_cam_or
, kinect2_cam_op
and kinect2_cam_oy
properties). Re-project the central pixel of the camera into a 3d ray and then calculate the distance from the cetnre of the sensor to the ground (see for example ray vs plane intersection tutorial). Calculate the coordinates of the ground point in the camera coordinates and then transform the point into the robot frame.
Explore pcl_ros functionality by running the following examples:
- Publish a static transform between the base_link and pcd_link at 10 Hz (e.g.
tf static_transform_publisher 0 0 0 0 0 0 base_link pcd_link 10
). - Setup a
pcd_to_pointcloud
node to generate a point cloud based on the provided pcd file (uol_cmp9767m_tutorial/models/ism_train_wolf.pcd
) in thepcd_link
frame with 1Hz frequency Visualise the point clound in rviz. The wolf is quite large so you will need to adjust the point size and zoom out a lot. - Inspect and run the
uol_cmp9767m_tutorial passthrough.launch
nodelet which should filter out the wolf’s legs (it only lets z values above 30 m). Now modify the filter such it removes the wolf’s tail but does not affect the rest of its body. - Using the passthrough launch file as a template, setup and run the
StatisticalOutlierRemoval
filter. What value of themean_k
parameter starts to affect visually the resulting point cloud? - Using the passthrough launch file as a template, setup and run the
Voxelgrid
filter. What is the critical value of theleaf_size
parameter which still makes the animal recognisable?