|
1 | 1 | # The Arm Commander |
2 | 2 |  [](https://opensource.org/licenses/BSD-3-Clause) |
3 | 3 |
|
4 | | -<!-- |
5 | | -Replace REPO_USER, & REPO_NAME in the lines below to get more auto-generated badges |
6 | | - |
7 | | -[](./BSD.txt) |
8 | | ---> |
| 4 | +**Robotics and Autonomous Systems Group, Research Engineering Facility, Research Infrastructure** |
| 5 | +**Queensland University of Technology** |
9 | 6 |
|
10 | | -The **Arm Commander** is a Python programming module for accelerating the development of robot arm manipulation applications. It provides programming access to general executing and tracking services for robot arm and end-effector manipulation. Application developers are spared from implementing the same services and primed for creating higher-level manipulation sequences. The programming effort can be significanly reduced. |
| 7 | +## Introduction |
11 | 8 |
|
12 | | -The arm commander defines a model programming interface for general robot arm manipulation and comprises the components for mapping move commands between the application and the underlying robotic manipulation platforms or arm movement planners such as [Moveit](https://ros-planning.github.io/moveit_tutorials/). It is expected that applications based on the **Arm Commander** can switch between Moveit 1, Moveit 2, and other platforms almost seamlessly. The current version works with [Moveit 1](https://ros-planning.github.io/moveit_tutorials/) and ROS Noetic. A long-term objective is to attain manipulation platform angostic and robot model agnostic support of application development. |
| 9 | +The **Arm Commander** is a Python programming module for accelerating the development of robot arm manipulation applications. |
13 | 10 |
|
14 | 11 |  |
15 | 12 |
|
16 | | -The arm commander is a critical component of the **Task Trees**, which is a SDK for building reusable and resilient behaviour tree-based robotic manipulation applications. Refer to the [Task Trees Github Repo](https://github.com/RAS-REF/task_trees) for the details. |
| 13 | +Use the [Documentation Entry Point](http://REF-RAS.github.io/arm_commander) to bring you to following parts of the documentation of the arm commander. |
| 14 | +- Overview of the Arm Commander |
| 15 | +- Installation Guide |
| 16 | +- Programming Tutorial Part 1 |
| 17 | +- Programming Tutorial Part 2 |
| 18 | +- Application Design Gallery |
| 19 | +- Summary of the API |
17 | 20 |
|
18 | | -The following figure the relation between the application, the arm commander, and the underlying robotic manipulation platform. |
| 21 | +## Robot Arm Programming with the Arm Commander |
19 | 22 |
|
20 | | - |
| 23 | +The arm commander presents a programming interface dedicated to robot arm manipulation and encapsulates useful but tedious programming components such as ROS and arm movement planning. The arm commander can support the development of applications using or not using ROS. The following example uses the arm commander API to move the end-effector of the robot arm `panda_arm` to the position (0.6, 0.0, 0.4), and then move it to another position (0.4, 0.2, 0.4) |
21 | 24 |
|
22 | | -## Application Progamming with the Arm Commander |
23 | | - |
24 | | -Application development can be made significantly simpler with the arm commander, which has implemented several processes essential in the interaction with the underlying robotic manipulation platform (i.e. Moveit). |
25 | | - |
26 | | - |
27 | | - |
28 | | -#### Handling and Tracking Move Commands |
29 | | - |
30 | | -Applications can use the support of the arm commander to issue, track and abort move commands, and can alternatively delegate the tracking to the arm commander. The arm commander supports synchronoization and error recovery. |
31 | | - |
32 | | -#### Resolving Different Forms of Target Pose |
33 | | - |
34 | | -Applications can specify the target pose in different forms. generally, the target pose can be in the form of a `Pose` object, a `PoseStamped` object, a list of 6 numbers representing (xyzrpy) or 7 numbers representing (xyzqqqq). Its components, the `position` and the `rotation`, can be specified individually while the other component is fixed at the current value. In addition, each of the xyz components of the `position` or the rpy components of the `rotation` can also be specified individually. For example, the end-effector can be moved to a new position in the x axis, while the y axis, z axis, and the rotation will remain the same. The **Arm Commander** resolves and re-packages the move commands appropriately for the underlying Moveit 1. |
35 | | - |
36 | | -#### Supporting the Use of Workspace and Constraints |
37 | | - |
38 | | -Applications can define the workspace to confine the end-effector within a 3D bounding box. They can also exploit helper functions to create various path constraints to regulate the joint status and the end-effector's pose during the execution of a move command. |
39 | | - |
40 | | -#### Enabling Custom Reference Frames in Move Commands |
41 | | - |
42 | | -Applications can define custom reference frames for specifying move commands relative to different local contexts. |
43 | | - |
44 | | -### Design Patterns of Arm Commander-based Robotic Manipulation Applications |
45 | | - |
46 | | -The [Application Design Gallery](docs/DESIGN.md) page presents several probable designs of robotic manipulation applications based on the arm commander and a robotic manipulation platform. |
47 | | - |
48 | | -### Application Programming Interface (API) |
49 | | - |
50 | | -The application programming interface (API) of the **Arm Commander** can be divided into three groups of functions: |
51 | | -- Issuing and tracking move commands |
52 | | -- Defining the workspace, collision objects, and custom frames of reference |
53 | | -- Querying the status of the robot arm and the system |
54 | | - |
55 | | - |
56 | | - |
57 | | -The [API Overview](docs/API_OVERVIEW.md) page has organized the available functions for browsing. The [Full API Documentation](https://REF-RAS.github.io/arm_commander/build/html/index.html) is also available for reference. |
58 | | - |
59 | | -## Installation |
60 | | - |
61 | | -The [Installation Guide](docs/INSTALL.md) describes a docker-based and a non-docker based procedures. |
62 | | - |
63 | | -## The Demonstration Application |
64 | | - |
65 | | -The demo application is located at `examples/commander_demo.py`. The demo requires a running Panda model on RViz. |
66 | | -``` |
67 | | -roslaunch panda_moveit_config demo.launch |
68 | 25 | ``` |
69 | | -Then execute the demo application. |
| 26 | +from arm_commander.commander_moveit import GeneralCommander, GeneralCommanderFactory |
| 27 | +
|
| 28 | +class ArmCommanderMoveExample(): |
| 29 | + def __init__(self): |
| 30 | + # create the General Commander and wait for it being ready to service move commands |
| 31 | + arm_commander: GeneralCommander = GeneralCommanderFactory.get_object('panda_arm') |
| 32 | + arm_commander.spin(spin_in_thread=True) |
| 33 | + arm_commander.wait_for_ready_to_move() |
| 34 | + # send two move commands one after another |
| 35 | + arm_commander.move_to_position(x = 0.6, y = 0.0, z = 0.4, wait=True) |
| 36 | + arm_commander.reset_state() |
| 37 | + arm_commander.move_to_position(x = 0.4, y = 0.2, wait=True) |
| 38 | + arm_commander.reset_state() |
70 | 39 | ``` |
71 | | -cd ~/arm_commander_ws |
72 | | -source devel/setup.bash |
73 | | -/usr/bin/python3 ./src/arm_commander/arm_commander/commander_demo.py |
74 | | -``` |
75 | | -The demo program is registered with the catkin workspace. The last command may be replaced by the following. |
76 | | -``` |
77 | | -rosrun arm_commander commander_demo.py |
78 | | -``` |
79 | | - |
80 | | -## Programming Tutorials |
81 | | - |
82 | | -A set of tutorials and example programs are provided in this package. |
83 | | - |
84 | | -- [Tutorial: Programming with the Arm Commander Package (Part 1)](docs/TUTORIAL_PART1.md) |
85 | | -- [Tutorial: Programming with the Arm Commander Package (Part 2)](docs/TUTORIAL_PART2.md) |
86 | | - |
87 | | -## Links |
88 | | -- [Application Design Gallery](docs/DESIGN.md) |
89 | | -- [API Overview](docs/API_OVERVIEW.md) |
90 | | -- [Installation Guide](docs/INSTALL.md) |
| 40 | + |
91 | 41 |
|
92 | | -## Authors |
| 42 | +## Developers |
93 | 43 |
|
94 | 44 | Dr Andrew Lui, Senior Research Engineer <br /> |
95 | 45 | Dr Dasun Gunasinghe, Senior Research Engineer <br /> |
|
0 commit comments