feat(script): add entry point for find joints limits (#2010)
Signed-off-by: Steven Palma <imstevenpmwork@ieee.org>
This commit is contained in:
@@ -304,19 +304,19 @@ Before collecting demonstrations, you need to determine the appropriate operatio
|
|||||||
|
|
||||||
This helps simplify the problem of learning on the real robot in two ways: 1) by limiting the robot's operational space to a specific region that solves the task and avoids unnecessary or unsafe exploration, and 2) by allowing training in end-effector space rather than joint space. Empirically, learning in joint space for reinforcement learning in manipulation is often a harder problem - some tasks are nearly impossible to learn in joint space but become learnable when the action space is transformed to end-effector coordinates.
|
This helps simplify the problem of learning on the real robot in two ways: 1) by limiting the robot's operational space to a specific region that solves the task and avoids unnecessary or unsafe exploration, and 2) by allowing training in end-effector space rather than joint space. Empirically, learning in joint space for reinforcement learning in manipulation is often a harder problem - some tasks are nearly impossible to learn in joint space but become learnable when the action space is transformed to end-effector coordinates.
|
||||||
|
|
||||||
**Using find_joint_limits.py**
|
**Using lerobot-find-joint-limits**
|
||||||
|
|
||||||
This script helps you find the safe operational bounds for your robot's end-effector. Given that you have a follower and leader arm, you can use the script to find the bounds for the follower arm that will be applied during training.
|
This script helps you find the safe operational bounds for your robot's end-effector. Given that you have a follower and leader arm, you can use the script to find the bounds for the follower arm that will be applied during training.
|
||||||
Bounding the action space will reduce the redundant exploration of the agent and guarantees safety.
|
Bounding the action space will reduce the redundant exploration of the agent and guarantees safety.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m lerobot.scripts.find_joint_limits \
|
lerobot-find-joint-limits \
|
||||||
--robot.type=so100_follower \
|
--robot.type=so100_follower \
|
||||||
--robot.port=/dev/tty.usbmodem58760431541 \
|
--robot.port=/dev/tty.usbmodem58760431541 \
|
||||||
--robot.id=black \
|
--robot.id=black \
|
||||||
--teleop.type=so100_leader \
|
--teleop.type=so100_leader \
|
||||||
--teleop.port=/dev/tty.usbmodem58760431551 \
|
--teleop.port=/dev/tty.usbmodem58760431551 \
|
||||||
--teleop.id=blue
|
--teleop.id=blue
|
||||||
```
|
```
|
||||||
|
|
||||||
**Workflow**
|
**Workflow**
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ lerobot-eval="lerobot.scripts.eval:main"
|
|||||||
lerobot-train="lerobot.scripts.train:main"
|
lerobot-train="lerobot.scripts.train:main"
|
||||||
lerobot-dataset-viz="lerobot.scripts.lerobot_dataset_viz:main"
|
lerobot-dataset-viz="lerobot.scripts.lerobot_dataset_viz:main"
|
||||||
lerobot-info="lerobot.scripts.lerobot_info:main"
|
lerobot-info="lerobot.scripts.lerobot_info:main"
|
||||||
|
lerobot-find-joint-limits="lerobot.scripts.lerobot_find_joint_limits:main"
|
||||||
lerobot-imgtransform-viz="lerobot.scripts.lerobot_imgtransform_viz:main"
|
lerobot-imgtransform-viz="lerobot.scripts.lerobot_imgtransform_viz:main"
|
||||||
|
|
||||||
# ---------------- Tool Configurations ----------------
|
# ---------------- Tool Configurations ----------------
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ gamepad to take control of the robot during training. Initially intervene freque
|
|||||||
reduce interventions as the policy improves.
|
reduce interventions as the policy improves.
|
||||||
|
|
||||||
**WORKFLOW**:
|
**WORKFLOW**:
|
||||||
1. Determine robot workspace bounds using `find_joint_limits.py`
|
1. Determine robot workspace bounds using `lerobot-find-joint-limits`
|
||||||
2. Record demonstrations with `gym_manipulator.py` in record mode
|
2. Record demonstrations with `gym_manipulator.py` in record mode
|
||||||
3. Process the dataset and determine camera crops with `crop_dataset_roi.py`
|
3. Process the dataset and determine camera crops with `crop_dataset_roi.py`
|
||||||
4. Start the learner server with the training configuration
|
4. Start the learner server with the training configuration
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ Simple script to control a robot from teleoperation.
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
python -m lerobot.scripts.server.find_joint_limits \
|
lerobot-find-joint-limits \
|
||||||
--robot.type=so100_follower \
|
--robot.type=so100_follower \
|
||||||
--robot.port=/dev/tty.usbmodem58760431541 \
|
--robot.port=/dev/tty.usbmodem58760431541 \
|
||||||
--robot.id=black \
|
--robot.id=black \
|
||||||
--teleop.type=so100_leader \
|
--teleop.type=so100_leader \
|
||||||
--teleop.port=/dev/tty.usbmodem58760431551 \
|
--teleop.port=/dev/tty.usbmodem58760431551 \
|
||||||
--teleop.id=blue
|
--teleop.id=blue
|
||||||
```
|
```
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -117,5 +117,9 @@ def find_joint_and_ee_bounds(cfg: FindJointLimitsConfig):
|
|||||||
busy_wait(0.01)
|
busy_wait(0.01)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def main():
|
||||||
find_joint_and_ee_bounds()
|
find_joint_and_ee_bounds()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user