Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DRAGON][WIP] latest version for real platform #606

Open
wants to merge 61 commits into
base: master
Choose a base branch
from

Conversation

tongtybj
Copy link
Collaborator

@tongtybj tongtybj commented Apr 13, 2024

What is this

This is the latest branch to run in the real platform

Details

Following components should be seperately merged to master branch

- keep the special definition about the transformation from baselink to CoG
- publish euler angles of CoG frame from spinal
- use rotation matrix instead of RPY euler in aerial_robot_estimation system
- modify sensor plugins of IMU, mocap, and VO
…ntation of both baselink and cog frame to avoid RPY Euler angles.

Send cog RPY Euler angles from spinal may violate the sync of cog2baselink rot between ros and spinal
…velocity

- add receiver of target SO(3) rotational motion in Dragon model
…_control.

Also add external wrench on CoG frame, e.g., for centripetal force.
- handle quaternion for target baselink instead of CoG
- adress the identical CoG and World frame issue in control framework
…on to calculate feasible control force and torque

- And process to check the robot configuration whether is fixed
…should be set by modelling or nagvigation methods
- add target angular velocity based on Lee SO3 control method
- retrieve cog orientation by converting from baselink orientation, since the desired cog orientation may be not updated in estimator. Need the last desired cog orientation.
…ion problem by SLSQP (nlopt)

Complete:
- nonlinear allocation for hovering (only gravity, no torque) with both numerical / analytical gradient
- nonlinear allocation for target wrench with numerical gradient
- nonlinear allocation for target wrench with analytical gradient, but constant inertia (depreacated)
- nonlinear allocation for target wrench with analytical gradient
…ng the first iteration result of static allication result
…ragon model, which will be the default one replacing the previous static allocation method.

This method can also calculate the slight change of thrust forces and giambal angles for each iteration.
We also update the control allocation part which can choose three methods: static one, strict nonlinear (SQP) one, and the gradient descent one (Jacobian)
  - separation of control terms into low frequency (P and I control terms) and high frequency (D control term). Low freq control term to determine gimbal roll angles, while high freq + low freq control terms to determine gimbal roll& pitch angles and thrust forces
  - use SR-inverse instead of psuedo inverse for allocation of gimbal pitch nagles and thrust forces, since gimbal roll angles is fixed according to low freq control term
  - enhancement of feasible control torque minminum (FCTmin) by heuristically change (increase) the gimbal roll angles in low FCTmin robot configuration (e.g. roll: -1.57, pitch: -0.78).
  - smooth transition of gimbal roll agnels between normal FCTmin robot configuration and low FCTmin robot configuration.
…e (e.g., roll: -1.57, pitch: -0.78). Use two pivot gimbals (e.g. gimbal 2 and gimbal 3)
…thod (both integral and separated full vectoring control method), confirmed with gazebo
tongtybj and others added 29 commits October 23, 2022 00:42
…hich enables the update of robot module owing to the extra module.
commit e2db68c
Author: Moju Zhao <[email protected]>
Date:   Fri Jan 19 21:12:05 2024 +0900

    [Dragon][VIM4] fix the wrong model name for gazebo URDF

commit 04f38a4
Author: moju zhao <[email protected]>
Date:   Wed Nov 8 15:52:41 2023 +0900

    [Dragon][VIM4] refactor the system to use Khadas VIM4
- use only pose fusion mode (0)
- set variable_sensor_tf_flag to true to deal with the different links where the spinal and sensor are attached
* [GA] add github action for jammy using ROS-O

* update

* update

* ubnutu:jammy

* ubnutu-22.04

* [GA] setup ros workspace and catkin build

* [GA] noetic->one

* [GA] python3-wstool

* [GA] sudo apt install python3-wstool

* [spinal] cmake17

* add rosinstall for debian. modified from noetic one

* update rosinstall path

* fix typo

* [motor test] C++17

* [GA] catkin build only aerial_robot and run catkin test

* skip libgeographiclib-dev

* [GA] ignore rosdep install error temporality

* [ROS-O][rosinstall] use C++17 patched mocap_optitrack package (jsk-ros-pkg#13)

* [ROS-O][rosinstall] update external repository path and version (jsk-ros-pkg#15)

* use self released apt repository

* update external repositry version

* remove external repositry from rosinstall because they are released

* remove error ignore flag when rosdep install

* [mocap_optitrack] add mocap_optitrack package to rosinstall

* [ROS-O][GA] build all packages

* [CI] remove the script for EoL ros distribution

* [CI][GA] merge ros one distribution test into .travis.sh

* [ROS-O] crate configure script to install ros-o system for jammy

* [ROS-O] update REAMDE to show the install instruction on Ubuntu22.04

* fix typo in README

* [rosinstall] remove rosinstall for EoL distribution

---------

Co-authored-by: Moju Zhao <[email protected]>
Co-authored-by: Moju Zhao <[email protected]>
* [RosTest] move the module of hovering check to "src" directory

* [Robot Interface] add python interpreted interface to support basic navigation motion, including joint control

* Use IPython to make the script more interpretive

Co-authored-by: Sugihara Kazuki <[email protected]>

* [aerial_robot_base] update version of package.xml to 3 to support condition

* [aerial_robot_base] add dependency to ipython

---------

Co-authored-by: Moju Zhao <[email protected]>
Co-authored-by: Sugihara Kazuki <[email protected]>
Co-authored-by: sugikazu75 <[email protected]>
* [RosTest] move the module of hovering check to "src" directory

* [Robot Interface] add python interpreted interface to support basic navigation motion, including joint control

* [Navigation] refactor the process for landing phase. Only accept new pose in hover state and also reset the target velocity in landing phase

* [Dragon][Naviagation] refactor the landing process by introducing a new state: pre_land_state

* [Dragon] remove unnecessary scripts

* [State Machine] implement basic classes based on ros smach, and also crate a simple demo script.

* [Demo] creates more simple demo based on smach and integrate the script in each bringup launch

* [RosTest] refactor the flight control test script to be based on the new state machine system

* [Demo] remove unnecessary old demo scripts

---------

Co-authored-by: Moju Zhao <[email protected]>
…ose and zero velocity for the end of circle motion
@tongtybj tongtybj force-pushed the develop/dragon/control_2021IJRR_livox branch from 66324d0 to dbf1591 Compare February 1, 2025 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants