From 57f247a25ca25c236fb52d7528ad6b0a9e671d4e Mon Sep 17 00:00:00 2001 From: Mnzs1701 Date: Wed, 1 May 2024 22:36:34 -0400 Subject: [PATCH 1/2] DJI Payload SDK Guide TeamG --- .../assets/drone_architecture.png | Bin 0 -> 110114 bytes .../dji-enterprise-payload-sdk.md | 94 ++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 wiki/common-platforms/assets/drone_architecture.png create mode 100644 wiki/common-platforms/dji-enterprise-payload-sdk.md diff --git a/wiki/common-platforms/assets/drone_architecture.png b/wiki/common-platforms/assets/drone_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b53a9b0b6bd382f286809d5055c50d03b101246b GIT binary patch literal 110114 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 literal 0 HcmV?d00001 diff --git a/wiki/common-platforms/dji-enterprise-payload-sdk.md b/wiki/common-platforms/dji-enterprise-payload-sdk.md new file mode 100644 index 00000000..d8c3cb6d --- /dev/null +++ b/wiki/common-platforms/dji-enterprise-payload-sdk.md @@ -0,0 +1,94 @@ +--- +date: 2024-05-01 # YYYY-MM-DD +title: Indoor UAV Navigation with DJI Enterprise Payload SDK (PSDK +--- +This section will help with implementing indoor control of DJI Enterprise series drones. Unlike the other section present in the knowledge base, this does not use the Onboard SDK (which DJI is phasing out) instead we use the **Payload SDK** (PSDK). The Payload SDK is aimed at enterprise users of DJI Drones and can be used for control of the drone, changing flight modes, reading sensors and streaming data. + + +Through this article you should be able to +1. Setup a Payload App for your DJI Enterprise Drone +2. Fly your DJI Enterprise Drone using the Payload SDK +3. Fly your DJI Enterprise Drone using the ROS2 Wrapper for Payload SDK + +## Requirements +In order to get started with the DJI Payload SDK, one would require the following **hardware** components +1. A DJI Enterprise Drone (e.g. DJI Mavic 3 Enterprise) +2. DJI Remote Controller +3. DJI Eport Lite Kit +4. A Compute Module (e.g. Raspberry Pi Zero, NVidia Jetson Orin) +5. A TTL to USB Converter Module (e.g. FT232RL) +6. (Optional for low latency video streaming) HDMI Capture Card +7. (Optional for camera feed streaming) USB C to ethernet module + +Once you have all these requirements you can proceed with the rest of the document. + +## Getting Started +In order to implement the DJI Payload SDK on a system one would first need to get our Payload Application approved by DJI. To do this you need to create an account on the DJI portal. You should be able to do this via the following link + +It is not necessary to be very accurate with the details of the Payload but a brief overview of what it will do will be required for the application. After entering all these details one can submit the Payload SDK application approval form. Within 2-3 days your payload application should be approved and you should get an email from DJI. + +Upon this approval you should be able to login to the DJI Developer Portal and see details regarding your payload. Which should match the following format + +| Name | Value | +|----------|----------| +| SDK Type | Payload SDK | +| App Name | Your_App_Name | +| APP ID | *six digit number* | +| App Key | 32 byte ID | +| App License| Long alphanumeric hash | +| Apply Status | accepted | + +## Creating the Payload Application + +The most straightforward way to run the Payload Application is to use run the samples scripts from Github. The code is available at . The code is written in C++ and can be compiled using CMake. Before compiling however, one would need to make changes in the configuration header files to include the APP ID, APP Key and APP License that you received from DJI. + +Before you run the sample code, you will need to make changes in the CPP files and the C files. + +For the CPP files you will need to change the following files: +1. `samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.json` +2. `samples/sample_c++/platform/linux/manifold2/application/dji_sdk_app_info.h` + +For the C files you will need to change the following files: +1. `samples/sample_c/platform/linux/manifold2/application/dji_sdk_app_info.h` + +If you are running on Jetson Nano change the file path to `samples/sample_c/platform/linux/nvidia_jetson/application/dji_sdk_app_info.h` + +Make sure to follow the structure of the message, the APP ID, APP Key and APP License should be in the aprropriate format for the JSON file. Once you have made these changes you can compile the code using CMake. + +Now that you have setup these ID's you will need to choose the type of communication that you will be using. There are three different types of communication that you can use with the Payload SDK. These are: +1. UART Communication +2. UART + USB Bulk Communication +3. UART + Ethernet Communication + +Based on whether you want the data stream or not you could choose the bulk or ethernet options but you **have** to have the UART communication. +These settings are set in the file named `samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h` + +![architecture](assets/drone_architecture.png) +## Running the Payload Application +Compile the code using CMake and then run the executable. Now you should be able to run the sample application. First connect the DJI Enterprise Drone to the Eport Lite Kit using their niche USB OTG Cable. (This funny cable looks like a regular USB C OTG but it does not work when flipped around). Make sure the sides A and B are connected correctly (Left side on drone is A and top side of EPort is also A). + +Connect the USB to UART Module to the Eport Lite Kit using jumper cables and on the other side connect it to the Compute Module where the code was built. Run the code and you should be able to see a menu that can run the different functions of the Payload SDK. + +### Using the ethernet module +This is a bit more complicated than the UART communication. You will need to connect the USB C to Ethernet module to the Eport Lite Kit and then connect the ethernet cable to the Compute Module. Then change the files `samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h` to update the communication mode to `DJI_USE_UART_AND_NETWORK_DEVICE` + +You will also need to obtain the address of the ethernet device that you are using. This can be done by connecting the device to a linux system and running `lsusb -v` to get the pid and vid of the device. To get the ethernet address of the device you should run `ifconfig`. These ids should be updated in the `samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.json` file. + +## ROS2 Wrapper for Payload SDK +The ROS2 Wrapper for the Payload SDK allows you to use ROS2 services and topics to control the DJI Enterprise Drone. There is a github repository here that +allows you to do that + + +## Summary +The provided sections offer instructions for implementing indoor control of DJI Enterprise series drones using the Payload SDK (PSDK) for enterprise users. It covers setting up a Payload App, configuring hardware requirements, modifying code, and utilizing a ROS2 Wrapper for extended functionality. + +## See Also: +- [DJI Payload SDK Documentation](https://developer.dji.com/payload-sdk/) +- [ROS2 Wrapper for Payload SDK](https://umdlife.github.io/psdk_ros2/) + +## Further Reading +- [Article from DJI Forum that explains interfacing with ethernet](https://sdk-forum.dji.net/hc/zh-cn/articles/15754783739545-M30-T-M3E%E6%9C%BA%E5%9E%8BPSDK%E7%AB%AF%E5%8F%A3USB-%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE) + +## References +- [1] “Payload SDK Documentation,” DJI Developer, https://developer.dji.com/payload-sdk/ (accessed May 1, 2024). +- [2] “Psdk ROS2 wrapper,” UMDLife - psdk_ros2 wrapper documentation, https://umdlife.github.io/psdk_ros2/ (accessed May 1, 2024). \ No newline at end of file From 3b53a9b3aea64d6f3b6af737c37c575a2a614b28 Mon Sep 17 00:00:00 2001 From: Mnzs1701 Date: Mon, 2 Dec 2024 23:26:28 -0500 Subject: [PATCH 2/2] Team G 2024 Wiki Entry Optitrack Mocap --- _data/navigation.yml | 2 + wiki/state-estimation/optitrack-mocap.md | 94 ++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 wiki/state-estimation/optitrack-mocap.md diff --git a/_data/navigation.yml b/_data/navigation.yml index a380856f..cb89859a 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -179,6 +179,8 @@ wiki: url: /wiki/state-estimation/Cartographer-ROS-Integration/ - title: Externally Referenced State Estimation for GPS Lacking Environments url: /wiki/state-estimation/gps-lacking-state-estimation-sensors.md + - title: Setting Up OptiTrack Motion Capture System with ROS + url: /wiki/state-estimation/optitrack-mocap.md - title: Programming url: /wiki/programming/ children: diff --git a/wiki/state-estimation/optitrack-mocap.md b/wiki/state-estimation/optitrack-mocap.md new file mode 100644 index 00000000..e36037cd --- /dev/null +++ b/wiki/state-estimation/optitrack-mocap.md @@ -0,0 +1,94 @@ +--- +date: 2024-12-02 +title: Setting Up OptiTrack Mocap System +--- + +Motion capture (mocap) systems, such as OptiTrack, provide highly accurate positional and orientational data, often regarded as ground truth, for rigid and deformable objects. This capability is invaluable in robotics for debugging subsystem modules, verifying controller designs, or comparing perception systems. By employing an array of overhead cameras and reflective markers, mocap systems accurately track movements and provide real-time feedback. + +Two major brands dominate the mocap market: VICON and OptiTrack. Both systems operate on similar principles but offer distinct software ecosystems and hardware configurations. In this guide, we will focus on the OptiTrack system, detailing its setup, integration with robotics software frameworks like ROS and PX4, and applications such as PX4 integration for aerial robots. + +## Overview of Motion Capture Systems + +Motion capture systems rely on reflective markers affixed to objects or bodies. These markers are tracked by high-speed cameras equipped with infrared (IR) lights. + +### Working Principles +- **Rigid Bodies**: For rigid objects like drones or ground robots, the relative positions of markers remain constant, allowing accurate calculation of the object’s position and orientation. +- **Deformable Bodies**: For flexible or articulated objects such as wires or human bodies, individual marker positions are tracked to reconstruct motion. + +### Applications in Robotics +- **Controller Tuning**: Validate robot control algorithms by comparing mocap data to expected outcomes. +- **Perception System Evaluation**: Benchmark sensor-based localization against mocap-generated ground truth. +- **Real-time Motion Planning**: Use mocap data for precise control in dynamic environments. + +**Note**: OptiTrack is particularly popular in the robotics community due to its affordability and ease of integration with open-source tools like ROS. + +## OptiTrack System Setup + +### Hardware Requirements +Before setting up the system, ensure your workspace meets the following requirements: +- **Camera Placement**: Arrange OptiTrack cameras to achieve overlapping fields of view. This maximizes tracking accuracy and avoids occlusions. +- **Reflective Markers**: Use pre-stitched marker configurations for rigid bodies or distribute markers evenly for deformable objects. +- **Environmental Considerations**: Reduce IR interference (e.g., sunlight or other IR sources) and minimize reflective surfaces that may cause false positives. + +### Software Setup: Motive Software in Windows +Motive is the core software used for managing OptiTrack motion capture systems, including configuration, tracking, visualization, and analysis of motion data. It supports various applications such as biomechanics studies, animation, VR, and robotics. + +#### Minimum System Requirements +- **Operating System**: Windows 10 or later (64-bit) +- **Processor (CPU)**: Intel Core i5 or equivalent +- **Memory (RAM)**: 8 GB +- **Graphics (GPU)**: Dedicated graphics card with DirectX 11 support (e.g., NVIDIA GeForce GTX 1050 or AMD Radeon RX 560) +- **Storage**: 500 GB or more SSD +- **USB Ports**: USB 3.0 +- **Network**: Gigabit Ethernet +- **Display Resolution**: Minimum 1920x1080 (Full HD) +- **Other Requirements**: DirectX 11 or higher + +[Installation and Activation Guide](https://docs.optitrack.com/v3.0/motive/installation-and-activation) + +### Pulling Mocap Data to a Linux Computer and ROS Workspace +The OptiTrack system is typically operated via a Windows computer connected to the cameras. The data can be streamed to a Linux machine running ROS for further integration. + +#### Steps: +1. Configure objects and setup using Motive software on the Windows machine. +2. Install the ROS driver `mocap_optitrack` on the Linux computer. Use these tutorials: + - [OptiTrack and ROS Tutorial](https://tuw-cpsg.github.io/tutorials/optitrack-and-ros/) + - [ROS Wiki: mocap_optitrack](http://wiki.ros.org/mocap_optitrack) +3. Ensure both systems are on the same network. +4. Stream data from Motive software by selecting the object name. Adjust broadcast frequency as needed (default: <100 Hz; maximum: 1000 Hz). + +> **Note**: The mocap data uses an ENU frame (East-North-Up). This differs from the Motive software visualization where Y is up. + +## Fuse Mocap Data into PX4 + +For aerial robotics, mocap data can be fused into PX4 for precise positioning. This is particularly useful in environments where GPS is unavailable. Detailed documentation is available [here](https://docs.px4.io/v1.12/en/ros/external_position_estimation.html). + +By following this guide, you can: +- Treat mocap data as a fake GPS signal. +- Enable PX4's position hold mode without GPS. + +### Tips for Successful Integration: +1. **Remap Data**: Map mocap data to `/mavros/vision_pose/pose` at 30–50 Hz in the ENU frame. The `mocap_optitrack` ROS driver handles this conversion. If not, write a script to ensure data consistency. +2. **Frame Alignment**: ROS uses the ENU frame, while PX4 internally uses the NED frame. Mavros ensures compatibility with ENU. +3. **EKF2_EV_DELAY Parameter**: Adjust this parameter in PX4 to synchronize IMU and mocap data. Compare orientations from both sources to determine the correct value. +4. **Bandwidth Management**: Minimize unnecessary network traffic to prevent data transfer bottlenecks, which can adversely affect motion planning. + +## Conclusion +OptiTrack motion capture systems offer unparalleled precision for robotics applications. By effectively setting up hardware, configuring Motive software, and integrating mocap data into frameworks like ROS and PX4, roboticists can unlock new possibilities in localization, control, and real-time planning. + +Adhering to best practices, such as proper marker placement and frame alignment, ensures accurate and reliable data for any application. Further exploration of advanced techniques and troubleshooting strategies will solidify OptiTrack’s role in cutting-edge robotics research and development. + +## See Also +- [Setting up ROS Workspaces](https://wiki.ros.org/ROS/Tutorials) +- [Motion Capture for Robotics](https://roboticsknowledgebase.com/mocap) + +## Further Reading +- [OptiTrack Official Documentation](https://optitrack.com/documentation/) +- [PX4 External Position Estimation](https://docs.px4.io/v1.12/en/ros/external_position_estimation.html) +- [Benchmarking Localization Systems](https://roboticsbenchmarking.com) + +## References +- OptiTrack Motive Installation Guide: +- TUW CPSG Tutorial: +- ROS Wiki - mocap_optitrack: +- PX4 External Position Estimation: