Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Add panda robot #1343

Closed
wants to merge 47 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
6052efc
[jsk_panda_robot] initial add
YoheiKakiuchi Mar 22, 2021
accd822
add find_package(catkin) to CMakeLists
Mar 30, 2021
0af2af5
add panda accesories CAD files for tool mouter
ykawamura96 Apr 28, 2021
a3f5431
Merge pull request #1 from ykawamura96/add_panda_robot
YoheiKakiuchi Apr 28, 2021
b2cbbef
Merge branch 'master' into add_panda_robot
YoheiKakiuchi Apr 28, 2021
a311aa7
[WIP] Add panda-teleop package
ykawamura96 Jun 8, 2021
2d139ea
changed outer to 0.06 in dual_panda-interface.l
softyanija Jun 9, 2021
5ecbeda
[jsk_panda_teleop] fix package.xml version to 1.1.0
ykawamura96 Jun 9, 2021
b78270a
[jsk_panda_accessories] remove unnesesorry virtual CAD file
ykawamura96 Jun 9, 2021
c72cf66
[jsk_panda_teleop] fix franka_play.sh
ykawamura96 Jun 9, 2021
16ca879
add arguments :width,:inner,:outer to :start-grasp, :width to :stop-g…
softyanija Jun 11, 2021
a67403f
Merge pull request #1 from softyanija/add_panda_robot
ykawamura96 Jun 11, 2021
03d6cc6
fix package name typo
ykawamura96 Jun 13, 2021
c427dee
Merge branch 'add_panda_robot' of https://github.com/ykawamura96/jsk_…
ykawamura96 Jun 13, 2021
fc9eff7
fix typo in master side running script
ykawamura96 Jun 13, 2021
3f6cda2
add jsk_panda.rosinstall
ykawamura96 Jun 14, 2021
325a61f
Move panda_record/play.launch and play.sh under the jsk_panda_startup
ykawamura96 Jun 16, 2021
116b355
make gripper file and add panda-hand_tweezer_v2
softyanija Jun 17, 2021
66300af
Update README.md
softyanija Jun 17, 2021
9721711
Update README.md
softyanija Jun 17, 2021
e48fe47
changed directory name gripper->tweezers and README.md
softyanija Jun 17, 2021
1f7bb5e
Merge branch 'add_panda_robot' of https://github.com/ykawamura96/jsk_…
softyanija Jun 17, 2021
75b438e
Merge pull request #2 from softyanija/add_panda_robot
ykawamura96 Jun 17, 2021
dc635d4
add end-coords_publisher.l
softyanija Jun 18, 2021
b6c87f2
add allow-other-keys to dual_panda-robot-interface :init
k-okada Jun 18, 2021
677d1a1
fix yaml format
k-okada Jun 18, 2021
bf6d4ba
Merge pull request #4 from k-okada/add_panda_robot
ykawamura96 Jun 18, 2021
14bfa3d
update rosdep for jsk_panda_teleop
ykawamura96 Jun 18, 2021
fd28f69
set rosparam '/dual_panda/end_coords_pub_hz' and made node 'end_coord…
softyanija Jun 23, 2021
7fedd0a
Merge branch 'add_panda_robot' of https://github.com/ykawamura96/jsk_…
softyanija Jun 23, 2021
75d8b0c
changed node name 'pose-stamped-publisher' to 'ee-poses-publisher' an…
softyanija Jun 23, 2021
4b3b416
add /dual_panda/end_coords/rarm and /larm to panda_record.launch
softyanija Jun 23, 2021
535dac9
modified indent in panda_record.launch
softyanija Jun 23, 2021
16b39a3
changed param name end_pose_publishing_hz to end_coords_publishing_hz…
softyanija Jun 23, 2021
0c497a6
add comment about end_coords_publishing_hz in dual_panda.launch
softyanija Jun 24, 2021
7d87be2
Merge pull request #3 from softyanija/add_panda_robot
ykawamura96 Jun 24, 2021
a7ed459
remove rwt teleop and fix name of controllers in start_pand_rt_contro…
ykawamura96 Jun 25, 2021
3d71fcf
Merge pull request #5 from softyanija/refacor_add_panda_robot
ykawamura96 Jun 27, 2021
5f0351e
[jsk_panda_robot] panda_start_launch now runs hand-eye usb camera by …
ykawamura96 Jul 2, 2021
09f2a62
Merge pull request #6 from softyanija/refacor_add_panda_robot
ykawamura96 Jul 2, 2021
0490ad5
[jsk_panda_robot] add audio capture and play
ykawamura96 Jul 2, 2021
afa9bcd
add readme
ykawamura96 Mar 20, 2022
6e47104
Update README.md
ykawamura96 Mar 20, 2022
02fdaae
refactor from review
ykawamura96 Mar 20, 2022
3522a9c
add env-hooks
ykawamura96 Mar 20, 2022
349b143
add topic syncronizer
ykawamura96 Mar 20, 2022
05653cf
Update README.md
ykawamura96 Mar 20, 2022
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
74 changes: 74 additions & 0 deletions jsk_panda_robot/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# JSK Panda Robot
## Installation
- Following pages provide informative resources.
- Official manual page: : https://frankaemika.github.io/docs/installation_linux.html
- Franka Community: https://www.franka-community.de/


### Installation for User PC
1. Install OpenHaptics from here; https://support.3dsystems.com/s/article/OpenHaptics-for-Linux-Developer-Edition-v34?language=en_US

2. Install ROS packages.
```
mkdir -p ~/franka_ws/src
cd ~/franka_ws/src
wstool init
wstool merge https://raw.githubusercontent.com/ykawamura96/jsk_robot/add_panda_robot/jsk_panda_robot/jsk_panda.rosinstall
wstool update
cd ../
source /opt/ros/melodic/setup.bash
rosdep install -y -r --from-paths src --ignore-src
catkin build
source devel/setup.bash
```
### Installation for Panda Controller PC
1. Please see and follow installation written in: https://frankaemika.github.io/docs/installation_linux.html
* Note that you need to install real-time kernel (`PREEMPT-PR` kernel) for real-time control.
* Ref: Current controller PC uses following kernel:
2. Please do the same ROS environment setup as `Installation for User PC` section above.



## Running Dual-Panda
### Boot robot
1. Please turn on the controller box and unlock joints by accessing desk.
### Via roseus
1. Start controller on controller PC;
1. `ssh leus@dual_panda.jsk.imi.i.u-tokyo.ac.jp`
2. `roslaunch jsk_panda_startup dual_panda.launch`

2. Controlling Dual-Panda via roseus
1. `$ rossetpanda`
2. execute following script in roseus;
```
(load "package://panda_eus/euslisp/dual_panda-interface.l")
(dual_panda-init)
(send *robot* :angle-vector (send *robot* :reset-pose)
(when (send *ri* :check-error
(send *ri* :recover-error))
(send *ri* :angle-vector (send *robot* :angle-vector) 3000)
```
### Teleop
#### Start program
1. Start controller on controller PC;
1. `$ ssh leus@dual_panda.jsk.imi.i.u-tokyo.ac.jp`
2. `$ roslaunch jsk_panda_teleop start_panda_rt_controller.launch start_bilateral:=true`
`start_bilateral:=true` connects haptic device and dual_panda from the beginning, i.e. it moves the robot immediately after running leader (user) side.
If you start with `start_bilateral:=false`, you would need to call following service call:
```
$ rosservice call /dual_panda/control_bilateral "pose_connecting: true
force_connecting: true
reset_phantom: true
wait: 3.0"
```
2. Start user PC: `$ rosrun jsk_panda_teleop start_master_side.sh`, then you should see rviz popup like this:
![image](https://user-images.githubusercontent.com/43567489/159150327-5e4d246b-2311-4eb4-814a-7f6fd11b6f29.png)

#### Move robot
1. Press connection mode switch (white button) to change connect or not-connect status between the haptic devices and the robot.
2. Press gripper switch to close / open gripper.
![image](https://user-images.githubusercontent.com/43567489/159150507-75122802-121e-4a22-abd1-b9540890950b.png)

#### Trouble Shooting
1. `Failed to initialize haptic device` -> Please give access to haptic devices, i.e `sudo chmod 777 /dev/ttyACM[0-1]`

22 changes: 22 additions & 0 deletions jsk_panda_robot/jsk_panda.rosinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# This file is for work space for panda PC.
# Currently .rosintall is shared with user PC's one.


# Wait until https://github.com/jsk-ros-pkg/jsk_robot/pull/1343 to be merged
- git:
local-name: jsk-ros-pkg/jsk_robot
uri: https://github.com/ykawamura96/jsk_robot.git
version: add_panda_robot

# Need for using multiple haptic devices
# wait https://github.com/bharatm11/Geomagic_Touch_ROS_Drivers/pull/5 to be merged.
- git:
local-name: phantom_drivers
uri: https://github.com/ykawamura96/Geomagic_Touch_ROS_Drivers.git
version: dual_phantom

# Need for using dual_arm_impedance controller
- git:
local-name: franka_ros
uri: https://github.com/ykawamura96/franka_ros.git
version: add_dual_arm_impedance_controller
7 changes: 7 additions & 0 deletions jsk_panda_robot/jsk_panda_accessories/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

# Tool mounter
Mounting any tools onto panda-hand. Plate mounter has M3 screw wholes placed by 10mm x 10mm.
![](https://raw.githubusercontent.com/ykawamura96/franka_demos/mech/add_adapter_parts/franka_accessories/panda_wrist/hand_adapter.png)
# tweezers
Expansion parts to grasp small things.
<img width="252" alt="tweezer_v2_right" src="https://user-images.githubusercontent.com/48650394/122322295-3781de00-cf60-11eb-926e-7aec0473b5ab.png">
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
17 changes: 17 additions & 0 deletions jsk_panda_robot/jsk_panda_startup/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 2.8.0)
find_package(catkin)
project(jsk_panda_startup)

catkin_package()

#############
## Install ##
#############

install(DIRECTORY launch config scripts
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
USE_SOURCE_PERMISSIONS)


catkin_add_env_hooks(99.jsk_panda_startup SHELLS bash zsh sh
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks)
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
robot_hardware:
- rarm
- larm

rarm:
type: franka_hw/FrankaCombinableHW
arm_id: rarm
joint_names:
- rarm_joint1
- rarm_joint2
- rarm_joint3
- rarm_joint4
- rarm_joint5
- rarm_joint6
- rarm_joint7
# Configure the threshold angle for printing joint limit warnings.
joint_limit_warning_threshold: 0.1 # [rad]
# Activate rate limiter? [true|false]
rate_limiting: true
# Cutoff frequency of the low-pass filter. Set to >= 1000 to deactivate.
cutoff_frequency: 1000
# Internal controller for motion generators [joint_impedance|cartesian_impedance]
internal_controller: joint_impedance
# Used to decide whether to enforce realtime mode [enforce|ignore]
realtime_config: enforce
# Configure the initial defaults for the collision behavior reflexes.
collision_config:
lower_torque_thresholds_acceleration: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
upper_torque_thresholds_acceleration: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
lower_torque_thresholds_nominal: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
upper_torque_thresholds_nominal: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
lower_force_thresholds_acceleration: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
upper_force_thresholds_acceleration: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
lower_force_thresholds_nominal: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
upper_force_thresholds_nominal: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]

larm:
type: franka_hw/FrankaCombinableHW
arm_id: larm
joint_names:
- larm_joint1
- larm_joint2
- larm_joint3
- larm_joint4
- larm_joint5
- larm_joint6
- larm_joint7
# Configure the threshold angle for printing joint limit warnings.
joint_limit_warning_threshold: 0.1 # [rad]
# Activate rate limiter? [true|false]
rate_limiting: true
# Cutoff frequency of the low-pass filter. Set to >= 1000 to deactivate.
cutoff_frequency: 1000
# Internal controller for motion generators [joint_impedance|cartesian_impedance]
internal_controller: joint_impedance
# Used to decide whether to enforce realtime mode [enforce|ignore]
realtime_config: enforce
# Configure the initial defaults for the collision behavior reflexes.
collision_config:
lower_torque_thresholds_acceleration: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
upper_torque_thresholds_acceleration: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
lower_torque_thresholds_nominal: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
upper_torque_thresholds_nominal: [20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0] # [Nm]
lower_force_thresholds_acceleration: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
upper_force_thresholds_acceleration: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
lower_force_thresholds_nominal: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
upper_force_thresholds_nominal: [20.0, 20.0, 20.0, 25.0, 25.0, 25.0] # [N, N, N, Nm, Nm, Nm]
177 changes: 177 additions & 0 deletions jsk_panda_robot/jsk_panda_startup/config/dual_panda_controllers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
dual_panda_effort_joint_trajectory_controller:
type: effort_controllers/JointTrajectoryController
joints:
- rarm_joint1
- rarm_joint2
- rarm_joint3
- rarm_joint4
- rarm_joint5
- rarm_joint6
- rarm_joint7
- larm_joint1
- larm_joint2
- larm_joint3
- larm_joint4
- larm_joint5
- larm_joint6
- larm_joint7
constraints:
goal_time: 0.5
larm_joint1:
goal: 0.05
larm_joint2:
goal: 0.05
larm_joint3:
goal: 0.05
larm_joint4:
goal: 0.05
larm_joint5:
goal: 0.05
larm_joint6:
goal: 0.05
larm_joint7:
goal: 0.05
rarm_joint1:
goal: 0.05
rarm_joint2:
goal: 0.05
rarm_joint3:
goal: 0.05
rarm_joint4:
goal: 0.05
rarm_joint5:
goal: 0.05
rarm_joint6:
goal: 0.05
rarm_joint7:
goal: 0.05
gains:
rarm_joint1: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint2: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint3: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint4: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint5: {p: 250, d: 10, i: 0, i_clamp: 1}
rarm_joint6: {p: 150, d: 10, i: 0, i_clamp: 1}
rarm_joint7: {p: 50, d: 5, i: 0, i_clamp: 1}
larm_joint1: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint2: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint3: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint4: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint5: {p: 250, d: 10, i: 0, i_clamp: 1}
larm_joint6: {p: 150, d: 10, i: 0, i_clamp: 1}
larm_joint7: {p: 50, d: 5, i: 0, i_clamp: 1}

dual_panda_pose_cartesian_controller:
type: franka_example_controllers/CartesianPoseExampleController
joints:
- rarm_joint1
- rarm_joint2
- rarm_joint3
- rarm_joint4
- rarm_joint5
- rarm_joint6
- rarm_joint7
- larm_joint1
- larm_joint2
- larm_joint3
- larm_joint4
- larm_joint5
- larm_joint6
- larm_joint7
constraints:
goal_time: 0.5
larm_joint1:
goal: 0.05
larm_joint2:
goal: 0.05
larm_joint3:
goal: 0.05
larm_joint4:
goal: 0.05
larm_joint5:
goal: 0.05
larm_joint6:
goal: 0.05
larm_joint7:
goal: 0.05
rarm_joint1:
goal: 0.05
rarm_joint2:
goal: 0.05
rarm_joint3:
goal: 0.05
rarm_joint4:
goal: 0.05
rarm_joint5:
goal: 0.05
rarm_joint6:
goal: 0.05
rarm_joint7:
goal: 0.05
gains:
rarm_joint1: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint2: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint3: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint4: {p: 600, d: 30, i: 0, i_clamp: 1}
rarm_joint5: {p: 250, d: 10, i: 0, i_clamp: 1}
rarm_joint6: {p: 150, d: 10, i: 0, i_clamp: 1}
rarm_joint7: {p: 50, d: 5, i: 0, i_clamp: 1}
larm_joint1: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint2: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint3: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint4: {p: 600, d: 30, i: 0, i_clamp: 1}
larm_joint5: {p: 250, d: 10, i: 0, i_clamp: 1}
larm_joint6: {p: 150, d: 10, i: 0, i_clamp: 1}
larm_joint7: {p: 50, d: 5, i: 0, i_clamp: 1}



dual_arm_cartesian_impedance_example_controller:
type: franka_example_controllers/DualArmCartesianImpedanceExampleController
right:
arm_id: rarm
joint_names:
- rarm_joint1
- rarm_joint2
- rarm_joint3
- rarm_joint4
- rarm_joint5
- rarm_joint6
- rarm_joint7
left:
arm_id: larm
joint_names:
- larm_joint1
- larm_joint2
- larm_joint3
- larm_joint4
- larm_joint5
- larm_joint6
- larm_joint7


rarm_state_controller:
type: franka_control/FrankaStateController
arm_id: rarm
joint_names:
- rarm_joint1
- rarm_joint2
- rarm_joint3
- rarm_joint4
- rarm_joint5
- rarm_joint6
- rarm_joint7
publish_rate: 30 # [Hz]

larm_state_controller:
type: franka_control/FrankaStateController
arm_id: larm
joint_names:
- larm_joint1
- larm_joint2
- larm_joint3
- larm_joint4
- larm_joint5
- larm_joint6
- larm_joint7
publish_rate: 30 # [Hz]
Loading