{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Coordinate Frames\n", "\n", "The purpose of this practical is to understand the various reference frames used to orient and control the UAV and practice transforming information between these frames. The major takeaways are:\n", " \n", " - The most common reference frames we will use are the North-East-Down (NED), East-North-Up (ENU), Body, Camera, and sometimes ARTag Marker frames.\n", " - The same vector can be expressed in difference reference frames\n", " - There are multiple ways in which we can express the difference between two reference frames including euler angles (yaw, pitch, roll), rotation matrices, and quaternions\n", " - The `tf2` ROS2 package are a useful way of communicating reference frame information on the drone, but we won't make immediate use of it, yet.\n", " - Can you find the topics that provide the estimated pose and velocity of the UAV's body frame with respect to the world frame in ROS2 ps4_msgs? (i.e. NED or ENU)\n", " \n", "## Coordinate Frame Practice\n", "\n", "We've pushed a jupyter notebook exercise to the `laboratory_2024` repository that will help us start practicing/learning these concepts and conventions. \n", "\n", "Navigate to `laboratory_2024/kinematics_dynamics/coordinate_transforms.ipynb`. Open this notebook and work through the questions.\n", "\n", "## Further Reading\n", "\n", "- PX4 Documentation: https://docs.px4.io/main/en/ros/external_position_estimation.html\n", "- TF2 Documentation: https://docs.ros.org/en/humble/Concepts/Intermediate/About-Tf2.html\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.13" } }, "nbformat": 4, "nbformat_minor": 2 }