Skip to content

Commit fe2ed55

Browse files
author
andrewluiqut
committed
initial commit of a stable arm_commander version
0 parents  commit fe2ed55

104 files changed

Lines changed: 12118 additions & 0 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.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.vscode/*
2+
*/__pycache__/*

CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Created with QCR's code template tool: https://github.com/qcr/code_templates
2+
3+
cmake_minimum_required(VERSION 3.0.2)
4+
project(arm_commander)
5+
6+
find_package(catkin REQUIRED COMPONENTS
7+
rospy
8+
)
9+
10+
catkin_python_setup()
11+
12+
catkin_package(
13+
)
14+
15+
catkin_install_python(PROGRAMS
16+
examples/commander_demo.py
17+
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
18+
)
19+

LICENSE

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
BSD 3-Clause License
2+
3+
Copyright (c) 2024, REF-RAS
4+
5+
Redistribution and use in source and binary forms, with or without
6+
modification, are permitted provided that the following conditions are met:
7+
8+
1. Redistributions of source code must retain the above copyright notice, this
9+
list of conditions and the following disclaimer.
10+
11+
2. Redistributions in binary form must reproduce the above copyright notice,
12+
this list of conditions and the following disclaimer in the documentation
13+
and/or other materials provided with the distribution.
14+
15+
3. Neither the name of the copyright holder nor the names of its
16+
contributors may be used to endorse or promote products derived from
17+
this software without specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# The Arm Commander Package
2+
![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)
3+
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+
-->
9+
10+
The **Arm Commander** is a library providing an enhanced interface for robot arm manipulation. It is designed to wrap around a robot arm movement planner (i.e. robotic manipulation platforms) such as [Moveit](https://ros-planning.github.io/moveit_tutorials/) or [Armer](https://github.com/qcr/armer) and to offer features that achieve more with less programming:
11+
12+
- Multiple forms of movement target specification
13+
- Pose
14+
- PoseStamped
15+
- A list of 6 numbers (xyzrpy)
16+
- A list of 7 numbers (xyzqqqq)
17+
- The position components with defaults (x, y, and z)
18+
- The missing parameters are defaulted to the current values
19+
- The rotation components with defaults (roll, pitch, and yaw)
20+
- The missing parameters are defaulted to the current values
21+
- Displacement components (dx, dy, dz)
22+
- Simple switch between cartesian path and planned path.
23+
- In a move command along a cartesian path, fractional execution is supported.
24+
- Addition and removal of collision objects for path planning and pose transform
25+
- Primitive shapes (box and sphere) and custom shapes are supported.
26+
- Pose transform between collision objects and robot links is supported through the tranform tree.
27+
- Attach and detach of objects for grab and drop simulation.
28+
- Asynchronous and synchronous command support
29+
- State transition model for command management.
30+
- Convenient functions for waiting, polling, and aborting of commands.
31+
- Addition and removal of contraints
32+
- Helper function for the creation of rotation, position, and joint-space constraints
33+
- Agnostic to the robotic manipulation platform design-wise (though this implementation supports only Moveit)
34+
- Agnostic to the robot arm model (through the underlying robotic manipulation platform)
35+
36+
## Installation
37+
38+
The arm_commander stems from an architecture that is robot model agnostic and arm manipulation platform agnostic. It hides away the
39+
details and offers a consistent application programming interface.
40+
41+
This implementation of arm_commander is specific to Moveit Version 1 (and therefore ROS Noetic). An environment installed with Moveit + ROS Noetic is needed. For your convenience, please refer to the docker image from the [docker deployment](https://github.com/REF-RAS/docker_deployment) repository of the REF-RAS group.
42+
43+
### Install Moveit (Non-Docker Method)
44+
45+
The non-docker method assumes the starting point of having ROS Noetic installed.
46+
47+
```
48+
sudo apt-get update
49+
sudo apt-get install ros-noetic-moveit -y
50+
```
51+
52+
### Install Arm Commander
53+
54+
Create a catkin workspace.
55+
```
56+
mkdir -p ~/arm_commander_ws/src
57+
cd ~/arm_commander_ws/src
58+
```
59+
60+
Clone this repository to the `src` directory.
61+
```
62+
git clone git@github.com:REF-RAS/arm_commander.git
63+
```
64+
65+
### Install a Robot Arm Model
66+
67+
The demo program and the tutorial programs are designed to work with the dimension of a Panda.
68+
69+
```
70+
cd ~/arm_commander_ws/src
71+
git clone https://github.com/ros-planning/panda_moveit_config.git -b noetic-devel
72+
```
73+
74+
### Build the Packages
75+
76+
```
77+
rosdep install --from-paths src --ignore-src -r -y --rosdistro noetic
78+
source /opt/ros/noetic/setup.bash
79+
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
80+
```
81+
82+
## Demonstration
83+
84+
The demo program is located at `examples/commander_demo.py`. To look at the demo, fire up the Panda model on RViz.
85+
```
86+
roslaunch panda_moveit_config demo.launch
87+
```
88+
Then execute the demo program.
89+
```
90+
cd ~/arm_commander_ws
91+
source devel/setup.bash
92+
/usr/bin/python3 ./src/arm_commander/arm_commander/commander_demo.py
93+
```
94+
95+
Video of the demo program
96+
[![Watch the demo](https://img.youtube.com/vi/YleDRs649VA/0.jpg)](https://www.youtube.com/watch?v=YleDRs649VA)
97+
98+
## Tutorials
99+
100+
A set of tutorials and example programs are provided in this package.
101+
102+
- [Tutorial: Programming with the Arm Commander Package (Part 1)](docs/TUTORIAL_PART1.md)
103+
- [Tutorial: Programming with the Arm Commander Package (Part 2)](docs/TUTORIAL_PART2.md)
104+
105+
106+
## API Documentation
107+
108+
API Documentation can be found in `/docs/build/html`. It will be available through Github Pages soon.
109+
110+
<!-- [API Documentation](https://REF-RAS.github.io/robotarchi/) is available for reference. -->
111+
112+
## Authors
113+
114+
Dr Andrew Lui, Senior Research Engineer <br />
115+
Dr Dasun Gunasinghe, Senior Research Engineer <br />
116+
Robotics and Autonomous Systems, Research Engineering Facility <br />
117+
Research Infrastructure <br />
118+
Queensland University of Technology <br />
119+
120+
Latest update: Feb 2024

arm_commander/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)