Skip to content

Commit 4c69230

Browse files
author
Andrew Lui
committed
The sphinx documentation framework is made to work with the Github page publication. The method is based on workflow action defined in a config
file under .github/workflows called sphinx.yml. The documentation files are relocated to the docs folder. An index.html file is placed at the docs folder which redirects to the index.html file under docs/build/html. The content of the documentation files have been revised.
1 parent c0519d7 commit 4c69230

75 files changed

Lines changed: 357 additions & 7705 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/sphinx.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: sphinx
2+
on: [push, pull_request, workflow_dispatch]
3+
4+
permissions:
5+
contents: write
6+
pages: write
7+
id-token: write
8+
9+
jobs:
10+
docs:
11+
environment:
12+
name: github-pages
13+
url: ${{ steps.deployment.outputs.page_url }}
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v3
17+
- uses: actions/setup-python@v3
18+
- name: Install dependencies
19+
run: |
20+
pip install sphinx sphinx_rtd_theme myst_parser
21+
- name: Sphinx build
22+
run: |
23+
cd docs && sphinx-build source build/html
24+
- name: Upload artifact
25+
uses: actions/upload-pages-artifact@v3
26+
with:
27+
path: docs
28+
- name: Deploy to GitHub Pages
29+
id: deployment
30+
uses: actions/deploy-pages@v4

.nojekyll

Whitespace-only changes.

README.md

Lines changed: 28 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,45 @@
11
# The Arm Commander
22
![QUT REF Collection](https://badgen.net/badge/collections/QUT%20REF-RAS?icon=github) [![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
33

4-
<!--
5-
Replace REPO_USER, & REPO_NAME in the lines below to get more auto-generated badges
6-
![Primary language](https://img.shields.io/github/languages/top/REPO_USER/REPO_NAME)
7-
[![License](https://img.shields.io/github/license/REPO_USER/REPO_NAME)](./BSD.txt)
8-
-->
4+
**Robotics and Autonomous Systems Group, Research Engineering Facility, Research Infrastructure**
5+
**Queensland University of Technology**
96

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
118

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.
1310

1411
![Demo Animation](docs/assets/DemoArmCommander.gif)
1512

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
1720

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
1922

20-
![Arm Commander Based Development](docs/assets/ArmCommander2.png)
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)
2124

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-
![Processes for Handling Move Commands](docs/assets/ArmCommander3.png)
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-
![Arm Commander Programming Interface](docs/assets/ArmCommander1.png)
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
6825
```
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()
7039
```
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+
![Demo Animation](docs/assets/ArmCommander-SimpleMove1.gif)
9141

92-
## Authors
42+
## Developers
9343

9444
Dr Andrew Lui, Senior Research Engineer <br />
9545
Dr Dasun Gunasinghe, Senior Research Engineer <br />

arm_commander/commander_moveit.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,6 +1358,9 @@ def get_object(moveit_group_name:str, world_link:str=None) -> GeneralCommander:
13581358
#
13591359

13601360
class CustomFormatter(logging.Formatter):
1361+
"""
1362+
:meta private:
1363+
"""
13611364
grey = '\x1b[38;20m'
13621365
cyan ='\x1b[36;20m'
13631366
yellow = '\x1b[33;20m'

docs/INSTALL_SPHINX.md

Lines changed: 0 additions & 23 deletions
This file was deleted.
461 KB
Loading
-3.45 KB
Binary file not shown.
-431 KB
Binary file not shown.
-3.1 KB
Binary file not shown.
-3.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)