Skip to content
Open
Show file tree
Hide file tree
Changes from 122 commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
01693ee
add drone
ooctipus Aug 23, 2025
957bd52
training run
ooctipus Aug 25, 2025
20b7fe6
somewhat worked
ooctipus Aug 25, 2025
0fba4bf
update aggregate_inertia_about_robot_com calculation
ooctipus Aug 25, 2025
9da4380
clean up
ooctipus Aug 25, 2025
042d2fc
pass precommit
ooctipus Aug 25, 2025
54d67af
add ntnu liscence
ooctipus Aug 25, 2025
9c38a67
resolve pre-commit complaint
ooctipus Aug 25, 2025
a0fc071
update robot link to nvidia link
ooctipus Aug 25, 2025
7f7e67f
clean up
ooctipus Aug 26, 2025
5ea906d
refactored thruster
ooctipus Aug 26, 2025
80a49d4
clean up
ooctipus Aug 26, 2025
544bf3d
add some docs
ooctipus Aug 26, 2025
36f7583
update naming for euler_angle_rates_w
ooctipus Aug 26, 2025
3740128
pass precommit
ooctipus Aug 26, 2025
10ea9b6
added more docs
ooctipus Aug 26, 2025
33c323c
rename controller
ooctipus Aug 26, 2025
dc31f3e
cleaned up controller
ooctipus Aug 26, 2025
456b481
cleaned thruster more
ooctipus Aug 26, 2025
550a9ee
mad naming consistent
ooctipus Aug 26, 2025
a5d6c59
resolve naming conventions
ooctipus Aug 26, 2025
6d7e6a9
add drone usd
ooctipus Aug 27, 2025
8229e1e
pass precommit
ooctipus Aug 27, 2025
dc95b61
motor control in direct and terrain importer in manager based working
Zwoelf12 Aug 29, 2025
bf36429
wip navigation in manager-based workflow: new articulation class with…
Zwoelf12 Sep 2, 2025
a07bf2e
naming cleanup
Zwoelf12 Sep 2, 2025
f656a02
make test case with floating obstacle and Anymal
Zwoelf12 Sep 2, 2025
50622c9
manager based flow not crashing, added depth camera, robot in visuali…
Zwoelf12 Sep 16, 2025
f71fd00
added VAE and changed observations to get image latents instead of de…
Zwoelf12 Sep 17, 2025
72216ce
lee velocity controller wip
Zwoelf12 Sep 18, 2025
737aff6
fix change
Zwoelf12 Sep 18, 2025
473c295
added lee velocity controller, not verified yet
Zwoelf12 Sep 22, 2025
ac2f724
Updated velocity controller
mihirk284 Sep 22, 2025
e14defd
removed unncessary print statements
mihirk284 Sep 22, 2025
5d3fda7
Apple forces to all links instead of just the first one
mihirk284 Sep 22, 2025
7e037d4
slight clean up
Zwoelf12 Sep 22, 2025
8538b90
added TODO
Zwoelf12 Sep 22, 2025
976b2bc
force add usd
Zwoelf12 Sep 23, 2025
0e0c5ce
try lfs again
Zwoelf12 Sep 23, 2025
9c03606
try lfs again
Zwoelf12 Sep 23, 2025
b079a0e
Updated code that learns to go to the goal location
mihirk284 Sep 25, 2025
658fae3
Updated code that learns to go to the goal location
mihirk284 Sep 25, 2025
461affb
push initial working navigation policy with depth images
grzemal Oct 2, 2025
89a22b9
Merge branch 'feature/drone' into hotfix/drone
grzemal Oct 2, 2025
00ee21e
update curriculum condition
grzemal Oct 2, 2025
94489da
Merge pull request #27 from ntnu-arl/hotfix/drone
grzemal Oct 2, 2025
c24fd6d
non fixed VAE weights path
Zwoelf12 Oct 3, 2025
6235db8
add rl_games compatibility
EtorArza Oct 6, 2025
4ae38af
navigation task with magpie mesh , random start and goal locations, a…
grzemal Oct 7, 2025
bd277a4
rl games config from aerialgym
grzemal Oct 7, 2025
62c58a7
Merge branch 'feature/drone' of github.com:ntnu-arl/IsaacLab into fea…
grzemal Oct 7, 2025
c5bc93b
rotate magpie mesh
grzemal Oct 7, 2025
a3b09a8
last action as observation
grzemal Oct 8, 2025
a19cce3
update vae with jit script
grzemal Oct 8, 2025
1b5ad99
position in the base frame
grzemal Oct 8, 2025
c48f0eb
change sample space of the goal location
grzemal Oct 8, 2025
9e880ad
correct observations and default action parametrization
grzemal Oct 9, 2025
27487e7
update observation and reward terms
grzemal Oct 9, 2025
4197836
clean up
grzemal Oct 9, 2025
9fd4819
reset the controller gains at every episode reset
grzemal Oct 9, 2025
bb113c9
clean up
grzemal Oct 9, 2025
f4e48fd
clean up the observations and goal sampling space
grzemal Oct 9, 2025
519f956
fix minimum number of obstacles and their location
grzemal Oct 11, 2025
e27edff
start always at easiest level and progress
grzemal Oct 11, 2025
b828403
adjust sampling space for resetting the env
grzemal Oct 11, 2025
a09c378
weight rewards based on the curriculum and keep agent in the highes…
grzemal Oct 11, 2025
87cc1b6
bugfix
grzemal Oct 11, 2025
fe5c95d
less strict condition
grzemal Oct 12, 2025
360f2be
update params
grzemal Oct 12, 2025
aa90eed
update params but still WIP
grzemal Oct 12, 2025
44d4728
action penalties
grzemal Oct 13, 2025
a11f1ff
camera params for the d455
grzemal Oct 13, 2025
0c3f77c
wip refactoring articulation_with_thrusters to multirotor and removin…
Zwoelf12 Oct 15, 2025
3ea7bc1
wip combined thrust works with refactored version
Zwoelf12 Oct 15, 2025
ab2783f
separate drone related terms from the other files
grzemal Oct 15, 2025
22568b9
add actions and command visualizations to the drone mdp
grzemal Oct 15, 2025
bd3fd4e
clean version of refactor with not working individual thrust application
Zwoelf12 Oct 15, 2025
f8ff26f
clean version of refactor only combined wrench application
Zwoelf12 Oct 15, 2025
739309f
removed old articulation with thrusters
Zwoelf12 Oct 15, 2025
8e5724e
more obstacles on the way
grzemal Oct 16, 2025
87c68cd
Merge branch 'feature/drone_refactor_mr_articulation' of github.com:n…
grzemal Oct 16, 2025
c8dfe1d
variable action dim for navigation action
Zwoelf12 Oct 16, 2025
f583dda
Merge branch 'main' of github.com:ntnu-arl/IsaacLab into feature/drone
grzemal Oct 16, 2025
9fdb66f
Merge branch 'feature/drone' of github.com:ntnu-arl/IsaacLab into fea…
grzemal Oct 16, 2025
5de8148
reverting changes on anymal files in navigation task
Zwoelf12 Oct 16, 2025
2fcc00e
remove obsolete
grzemal Oct 16, 2025
b055cb0
clean up
grzemal Oct 16, 2025
1760a21
clean up
grzemal Oct 16, 2025
f7723da
remove obsolete
grzemal Oct 16, 2025
42265a7
revert back
grzemal Oct 16, 2025
5cd7a66
update
grzemal Oct 16, 2025
83dd1f4
state based position control with LMF2 (reward function still needs s…
Zwoelf12 Oct 16, 2025
3bb369a
Merge branch 'feature/drone' of github.com:ntnu-arl/IsaacLab into fea…
Zwoelf12 Oct 16, 2025
d8d25eb
refactor and clean up of the drone related tasks
grzemal Oct 17, 2025
f0000d3
revert back the changes
grzemal Oct 17, 2025
cebc6c6
delete obsolete
grzemal Oct 17, 2025
c605b05
revert back the navigation anymal task
grzemal Oct 17, 2025
c82d66b
clean up
grzemal Oct 17, 2025
7177e2e
fix currriculum and navigation rewards after merging with state-based…
grzemal Oct 17, 2025
f2abb3b
delete obsolete
grzemal Oct 17, 2025
2f4e363
remove comment
grzemal Oct 17, 2025
e263236
add custom function for object placement
grzemal Oct 17, 2025
a80a1a9
fix naming
grzemal Oct 17, 2025
2429a66
remove direct implementation
grzemal Oct 17, 2025
71e0ec6
remove navigation related terms
grzemal Oct 17, 2025
e8ddd2c
clean up for first pr
grzemal Oct 17, 2025
febac18
bugfix
grzemal Oct 17, 2025
a0a6b2b
fix
grzemal Oct 17, 2025
af1436c
fix typos
grzemal Oct 17, 2025
9cb7c99
set episode length for 5sec
grzemal Oct 17, 2025
e5cfa4c
fix typos
grzemal Oct 17, 2025
f417b07
fix naming
grzemal Oct 17, 2025
968b64f
code after formatter
grzemal Oct 18, 2025
64177b3
add missing imports and remove unused imports and fix name mismatches
grzemal Oct 18, 2025
3eacbd5
all tests passed
grzemal Oct 18, 2025
ac20dbb
chore(ci): fix lint issues and add PR body
grzemal Oct 18, 2025
b39285c
chore(ci): fix lint issues and add PR body
grzemal Oct 18, 2025
9be0504
delete obsolete
grzemal Oct 18, 2025
191a4b9
add names
grzemal Oct 19, 2025
11cca2b
update with mesh and recent usd
grzemal Oct 20, 2025
d6a82ba
fixed velocity reward issue
Zwoelf12 Oct 20, 2025
b17c7c2
fix typo
grzemal Oct 21, 2025
cdb9380
remove fix dt from thruster
grzemal Oct 22, 2025
f0dc677
Update source/isaaclab/isaaclab/actuators/thruster.py
grzemal Oct 22, 2025
d9348b1
Update source/isaaclab/isaaclab/assets/articulation/multirotor_cfg.py
grzemal Oct 22, 2025
b0f90d6
docs(thruster): add missing __init__ arg descriptions
grzemal Oct 22, 2025
a717121
cache _ALL_INDICES to avoid reallocations
grzemal Oct 22, 2025
476798d
use wrap_to_pi
grzemal Oct 23, 2025
9d59216
clean up the rewards and observations for the state based control task
grzemal Oct 23, 2025
b6d30f0
use default sampling function and remove obsolete
grzemal Oct 23, 2025
3292b8d
remove obsolete
grzemal Oct 23, 2025
a46ff1f
simplify drone command implementation
grzemal Oct 24, 2025
658ce9c
Update source/isaaclab_tasks/isaaclab_tasks/manager_based/drone_ntnu/…
grzemal Oct 24, 2025
ecaad98
add descriptions
grzemal Oct 24, 2025
a54454f
Merge branch 'feature/drone_multirotor_class' of github.com:ntnu-arl/…
grzemal Oct 24, 2025
7b312d9
clean up
grzemal Oct 25, 2025
c3f5987
make Thruster class generic
grzemal Oct 26, 2025
9286f62
add docstring
grzemal Oct 26, 2025
22f8758
remove num_motors from config
Zwoelf12 Oct 27, 2025
8587f17
added motor model functions to thruster class
Zwoelf12 Oct 27, 2025
865f407
fix private property and added error when non thruster actuator is found
Zwoelf12 Oct 27, 2025
8a01a1d
added submodule for LMF2 drone model
Zwoelf12 Oct 27, 2025
6b7e40b
added LMF2 drone model as git submodule
Zwoelf12 Oct 27, 2025
2586248
updated git submodule without git ssh url
Zwoelf12 Oct 27, 2025
895b888
adding explicit calculation of num_resets when env_ids is None
Zwoelf12 Oct 27, 2025
df0384f
removed thruster simulation based only on force without using rps
Zwoelf12 Oct 27, 2025
05fa7bc
remove header duplicate
Zwoelf12 Oct 27, 2025
280b979
Fixed type of asset
Zwoelf12 Oct 27, 2025
256e4cb
fixed thrust initialization on reset
Zwoelf12 Oct 27, 2025
71028fa
update usd naming
Zwoelf12 Oct 28, 2025
577671d
update assets in submodule
Zwoelf12 Oct 28, 2025
27545b4
renaming robot
Zwoelf12 Oct 28, 2025
b9ed6a4
update submodule
Zwoelf12 Oct 28, 2025
51f002e
update submodule
Zwoelf12 Oct 28, 2025
f28d9d3
update submodule
Zwoelf12 Oct 28, 2025
91ac1ca
fix submodule path
grzemal Oct 29, 2025
5b37927
update naming convention
grzemal Oct 29, 2025
fcb0ee9
bugfix
grzemal Oct 29, 2025
ddfd5cc
add docstrings and clean up with --format
grzemal Oct 29, 2025
167225f
bug fix
Zwoelf12 Oct 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Guidelines for modifications:
* Felix Yu
* Gary Lvov
* Giulio Romualdi
* Grzegorz Malczyk
* Haoran Zhou
* Harsh Patel
* HoJin Jeon
Expand Down Expand Up @@ -100,6 +101,7 @@ Guidelines for modifications:
* Michael Noseworthy
* Michael Lin
* Miguel Alonso Jr
* Mihir Kulkarni
* Mingyu Lee
* Muhong Guo
* Neel Anand Jawale
Expand Down Expand Up @@ -135,6 +137,7 @@ Guidelines for modifications:
* Virgilio Gómez Lambo
* Vladimir Fokow
* Wei Yang
* Welf Rehberg
* Xavier Nal
* Xinjie Yao
* Xinpeng Liu
Expand Down
130 changes: 65 additions & 65 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -1,65 +1,65 @@
@ECHO OFF
pushd %~dp0
REM Command file to build Sphinx documentation
set SOURCEDIR=.
set BUILDDIR=_build
REM Check if a specific target was passed
if "%1" == "multi-docs" (
REM Check if SPHINXBUILD is set, if not default to sphinx-multiversion
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-multiversion
)
where %SPHINXBUILD% >NUL 2>NUL
if errorlevel 1 (
echo.
echo.The 'sphinx-multiversion' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-multiversion' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
REM Copy the redirect index.html to the build directory
copy _redirect\index.html %BUILDDIR%\index.html
goto end
)
if "%1" == "current-docs" (
REM Check if SPHINXBUILD is set, if not default to sphinx-build
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
where %SPHINXBUILD% >NUL 2>NUL
if errorlevel 1 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
if exist "%BUILDDIR%\current" rmdir /s /q "%BUILDDIR%\current"
%SPHINXBUILD% -W "%SOURCEDIR%" "%BUILDDIR%\current" %SPHINXOPTS%
goto end
)
REM If no valid target is passed, show usage instructions
echo.
echo.Usage:
echo. make.bat multi-docs - To build the multi-version documentation.
echo. make.bat current-docs - To build the current documentation.
echo.
:end
popd
@ECHO OFF

pushd %~dp0

REM Command file to build Sphinx documentation

set SOURCEDIR=.
set BUILDDIR=_build

REM Check if a specific target was passed
if "%1" == "multi-docs" (
REM Check if SPHINXBUILD is set, if not default to sphinx-multiversion
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-multiversion
)
where %SPHINXBUILD% >NUL 2>NUL
if errorlevel 1 (
echo.
echo.The 'sphinx-multiversion' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-multiversion' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

REM Copy the redirect index.html to the build directory
copy _redirect\index.html %BUILDDIR%\index.html
goto end
)

if "%1" == "current-docs" (
REM Check if SPHINXBUILD is set, if not default to sphinx-build
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
where %SPHINXBUILD% >NUL 2>NUL
if errorlevel 1 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
if exist "%BUILDDIR%\current" rmdir /s /q "%BUILDDIR%\current"
%SPHINXBUILD% -W "%SOURCEDIR%" "%BUILDDIR%\current" %SPHINXOPTS%
goto end
)

REM If no valid target is passed, show usage instructions
echo.
echo.Usage:
echo. make.bat multi-docs - To build the multi-version documentation.
echo. make.bat current-docs - To build the current documentation.
echo.

:end
popd
2 changes: 2 additions & 0 deletions source/isaaclab/isaaclab/actuators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
IdealPDActuatorCfg,
ImplicitActuatorCfg,
RemotizedPDActuatorCfg,
ThrusterCfg,
)
from .actuator_net import ActuatorNetLSTM, ActuatorNetMLP
from .actuator_pd import DCMotor, DelayedPDActuator, IdealPDActuator, ImplicitActuator, RemotizedPDActuator
from .thruster import Thruster
52 changes: 52 additions & 0 deletions source/isaaclab/isaaclab/actuators/actuator_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

from . import actuator_net, actuator_pd
from .actuator_base import ActuatorBase
from .thruster import Thruster


@configclass
Expand Down Expand Up @@ -283,3 +284,54 @@ class RemotizedPDActuatorCfg(DelayedPDActuatorCfg):
This tensor describes the relationship between the joint angle (rad), the transmission ratio (in/out),
and the output torque (N*m). The table is used to interpolate the output torque based on the joint angle.
"""


@configclass
class ThrusterCfg:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntax: ThrusterCfg is missing the @configclass decorator that all other config classes in this file have. This will prevent it from being properly initialized as a config class.


class_type: type[Thruster] = Thruster
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

logic: class_type should use type[ActuatorBase] to match the pattern of other actuator configs in this file, not type[Thruster]. The type annotation should reference the base class. Is Thruster intended to inherit from ActuatorBase, or is this a separate actuator system with a different base class?

"""Concrete Python class that consumes this config."""

# stiffness = 0.1 # only necessary to make this conform with Isaac
# damping = 0.1 # only necessary to make this conform with Isaac

dt: float = 0.01
"""Simulation/integration timestep used by the thruster update [s]."""

num_motors: int = 4
"""Number of motors/propulsors on the vehicle."""

thrust_range: tuple[float, float] = (0.1, 10.0)
"""Per-motor thrust clamp range [N]: values are clipped to this interval."""

max_thrust_rate: float = 100000.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: default value 100000.0 N/s is extremely high for a thrust rate limit (allows 100kN/s change). For small drones like LMF2, typical values are 10-100 N/s. Is this intentional for a generic default? What is the expected motor/propeller size range for this actuator, and was 100kN/s validated against real hardware specs?

"""Per-motor thrust slew-rate limit applied inside the first-order model [N/s]."""

thrust_const_range: tuple[float, float] = (9.26312e-06, 1.826312e-05)
"""Range for thrust coefficient :math:`k_f` when ``use_rps=True`` [N/(rps²)]."""

tau_inc_range: tuple[float, float] = (0.05, 0.08)
"""Range of time constants when commanded output is **increasing** (rise dynamics) [s]."""

tau_dec_range: tuple[float, float] = (0.005, 0.005)
"""Range of time constants when commanded output is **decreasing** (fall dynamics) [s]."""

torque_to_thrust_ratio: float = 0.07
"""Yaw-moment coefficient converting thrust to motor torque about +Z [N·m per N].
Used as ``tau_z = torque_to_thrust_ratio * thrust_z * direction``.
"""

use_discrete_approximation: bool = True
"""If ``True``, use discrete mixing factor ``1/(dt + tau)``; if ``False``, use continuous ``1/tau``."""

use_rps: bool = True
"""If ``True``, integrate in rotor-speed domain (ω) and compute thrust via ``F = k_f * ω**2``.
If ``False``, integrate thrust directly.
"""

integration_scheme: Literal["rk4", "euler"] = "rk4"
"""Numerical integrator for the first-order model. Choose ``"euler"`` or ``"rk4"``."""

thruster_names_expr: list[str] = ["back_left_prop", "back_right_prop", "front_left_prop", "front_right_prop"]

"""Articulation's joint names that are part of the group."""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: thruster_names_expr docstring is on line 334 but should be on line 333 immediately after the attribute definition. The blank line on 333 breaks the docstring association.

Loading