Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
27 changes: 27 additions & 0 deletions jsk_generic_teleop/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
cmake_minimum_required(VERSION 2.8.3)
project(jsk_generic_teleop)

find_package(catkin REQUIRED COMPONENTS
geometry_msgs
roseus
sensor_msgs
std_msgs
)

catkin_package(CATKIN_DEPENDS
geometry_msgs
roseus
sensor_msgs
std_msgs
)

file(GLOB PYTHON_SCRIPTS scripts/*.py)
catkin_install_python(
PROGRAMS ${PYTHON_SCRIPTS}
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(DIRECTORY config euslisp launch sample
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
USE_SOURCE_PERMISSIONS
)
61 changes: 61 additions & 0 deletions jsk_generic_teleop/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# jsk_generic_teleop

`jsk_generic_teleop` provides a Roseus teleoperation loop that keeps input-device handling separate from robot IK.

The main entry point is `jsk-generic-teleop` in `euslisp/jsk-generic-teleop.l`.
It subscribes to one input device, updates target end-effector coordinates, solves IK on the Eus robot model, and sends the resulting angle-vector through the robot interface.


## Supported input devices

- **Touch HID/USB** `:omni`: absolute input from `omni_msgs/OmniState`
- **Space Navigator** `:spacenav`: relative input from `sensor_msgs/Joy`


## Dependencies

The following package is released, please build manually,
[omni_msgs](https://github.com/bharatm11/Geomagic_Touch_ROS_Drivers)


## Usage

Load your robot model and interface first, then call:

```lisp
(require "package://jsk_generic_teleop/euslisp/jsk-generic-teleop.l")
(jsk-generic-teleop
:robot *robot*
:arms '(:larm :rarm)
:device-type :omni
:init-pose :reset-pose
:origin-offsets '((:larm . (:pos #f(400 100 50)
:rpy-deg #f(0 0 0)))
(:rarm . (:pos #f(400 -100 50)
:rpy-deg #f(0 0 0))))
:ratio 0.5)
```

For relative input:

```lisp
(jsk-generic-teleop
:robot *robot*
:arms '(:rarm)
:device-type :spacenav
:init-pose :reset-pose
:origin-offsets #f(0 0 0)
:ratio 1.0)
```

The relative `Joy` convention is axes `[x y z roll pitch yaw]`.
Buttons `0` and `1` select the first and second arm when two arms are passed.

For Touch HID, `origin-offsets` defines where the device zero pose lands in
the robot world frame after `init-pose` is applied. A plain `#f(x y z)` still
works for position-only offsets. Use `(:pos #f(x y z) :rpy #f(roll pitch yaw))` or
`(:pos #f(x y z) :rpy-deg #f(roll pitch yaw))` when the device zero pose also
needs an orientation offset. The default absolute axis mapping follows
`nextage_tutorials/euslisp/jsk-nextage-teleop.l`; pass
`:absolute-rotation-map` when a robot needs a different device-to-robot frame
mapping.
17 changes: 17 additions & 0 deletions jsk_generic_teleop/config/jsk-nextage.repos.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
repositories:
rtmros/rtmros_common:
type: git
url: git@github.com:start-jsk/rtmros_common.git
version: master
rtmros/rtmros_hironx:
type: git
url: https://github.com/start-jsk/rtmros_hironx.git
version: indigo-devel
rtmros/rtmros_nextage:
type: git
url: git@github.com:Michi-Tsubaki/rtmros_nextage.git
version: add-display-launch
rtmros/rtmros_tutorials:
type: git
url: git@github.com:Michi-Tsubaki/rtmros_tutorials.git
version: add-camera-and-ft-sensor
5 changes: 5 additions & 0 deletions jsk_generic_teleop/config/touch-hid.repos.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repositories:
Geomagic_Touch_ROS_Drivers:
type: git
url: git@github.com:pazeshun/Geomagic_Touch_ROS_Drivers.git
version: dual-phantom-readme
Loading
Loading