Robot Arm Attachment - Field-Robotics-Lab/dave GitHub Wiki
Conclusion: We work out how to use the Oberon7 arm on the UUV.
This page examines the following:
- Joystick controller.
- Robot arm.
- Attaching the arm to the UUV.
- Run the simulation to manipulate the arm
Joystick Controller
We start with a Logictech F310 Gamepad controller. It has 6 analog inputs and about 10 buttons. We map inputs to control joints on the UUV's arm.
The joystick plugs in using USB and is available at /dev/input/js0
. In typing ls -l /dev/input/js0
, we see that we might need to widen permissions by typing sudo chmod a+rw /dev/input/jsX
.
From http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick:
- Start roscore
- Somewhere type
rosparam set joy_node/dev "/dev/input/js0"
. - Start joysick node:
rosrun joy joy_node
. Maybe disregard "force feedback" error. - Start rostopic:
rostopic echo joy
. - Move joystick controls to see parameters change.
We use the joy
ROS joystick driver (https://docs.ros.org/api/joy/html/) joy_node
node which provides message "Joy" which carries all joystick data. Joy tutorials: http://wiki.ros.org/joy/Tutorials. The first tutorial to obtain joy
messages. The second tutorial consumes joy
messages to produce twist
messages.
Robot Arm
We need a 6 DOF manipulator.
niryo_one_ros
https://github.com/NiryoRobotics/niryo_one_ros
Katana (not available)
Not available for Melodic. Here are references.
- Katana driver: https://wiki.ros.org/katana_driver
katana_driver
Wiki: https://wiki.ros.org/katana_driver- A tutorial: https://community.arm.com/developer/research/b/articles/posts/do-you-want-to-build-a-robot
uuv_manipulator
The uuv_manipulator repository contains several arms designed for use with uuv_simulator. These include oberon4 and oberon7. They have very little documentation but oberon7 seems to have at least 6 degrees of freedom. oberon4 may also.
It is trivial to get these attached to the rexrov system:
1 . Install uuv_simulator.
2 . Change into the src directory of the uuv_simulator workspace and clone the uuv_manipulator repository:
git clone https://github.com/uuvsimulator/uuv_manipulators.git
3 . Build your catkin workspace
cd ~/catkin_ws
catkin_make # or <catkin build>, if you are using catkin_tools
4 . Start uuv_simulator:
roslaunch uuv_gazebo_worlds ocean_waves.launch
5 . In a separate window, spawn a system with the oberon4 arm attached:
roslaunch uuv_descriptions upload_rexrov_oberon4.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov
or the oberon7 arm
roslaunch uuv_descriptions upload_rexrov_oberon7.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov
or both
roslaunch uuv_descriptions upload_rexrov_oberon_arms.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov
Controlling oberon4 and oberon7 with a gamepad.
Partial progress:
Installing uuv_simulator
makes available a number of launchers in the oberon7_control package. For example:
roslaunch oberon7_control joint_effort_controllers.launch uuv_name:=rexrov
seems promising. However, this currently results in the following errors:
[INFO] [1572461853.162561, 0.000000]: Loading controller: /rexrov/oberon7/azimuth/controller
[ERROR] [1572461873.656797, 357.492000]: Failed to load /rexrov/oberon7/azimuth/controller
[INFO] [1572461873.659567, 357.496000]: Loading controller: /rexrov/oberon7/shoulder/controller
[ERROR] [1572461874.667834, 358.502000]: Failed to load /rexrov/oberon7/shoulder/controller
[INFO] [1572461874.669778, 358.504000]: Loading controller: /rexrov/oberon7/elbow/controller
[ERROR] [1572461875.676637, 359.510000]: Failed to load /rexrov/oberon7/elbow/controller
[INFO] [1572461875.678777, 359.512000]: Loading controller: /rexrov/oberon7/roll/controller
[ERROR] [1572461876.685732, 360.518000]: Failed to load /rexrov/oberon7/roll/controller
[INFO] [1572461876.688153, 360.520000]: Loading controller: /rexrov/oberon7/pitch/controller
[ERROR] [1572461877.695606, 361.526000]: Failed to load /rexrov/oberon7/pitch/controller
[INFO] [1572461877.697557, 361.528000]: Loading controller: /rexrov/oberon7/wrist/controller
[ERROR] [1572461878.704791, 362.534000]: Failed to load /rexrov/oberon7/wrist/controller
These could be produced by a conflict with something I already have running, or by failure to correctly provide command-line options, or something else. Currently investigating.
Typing:
rosservice list
shows services including /rexrov/*
services such as camera and thrusters. I expect this list should include /rexrov/oberon7/wrist/controller
.
In the Gazebo GUI, in the World tab, we see Models/rexrov/oberon7 with parts including wrist_link
.