The review today is about about two very easy to use yet powerful tools in robotics Eva Robotic Arm and SoftGripping's modular pneumatically powered elastic gripper. Todays both of these tools presented are very easy to use, anyone with zero technical knowledge can use within a few hours, can create pick and place tasks and much more dependent upon their needs.
Eva Arm
Eva arm is a lightweight arm suuitable for small task(<1.25Kg). It comes with everything you might need for your everyday use and work out-of-the-box. Everything is intergrated inside the robot base. Just a little down side is noise of motors and jerk when breaks are released.
Programming is relatively simple. It can be programmed in two ways:
1. Choreograph(Browser bassed drag and drop functionality)
2. Python SDK and REST Api
Choreograph is a browser based tool to program robot. It can be used for smaller and simple applications and any individual without technical knowledge can use that. It is also a nice place to start learning functionality of Eva robot and toolpaths used by the robot. Next is Python SDK and REST Api for more complex and intefration tasks. Python SDK also includes several examples for vision based pick and place and navigation in grid structures. Though ROS ties can be written using Python SDK/REST api but at the moment the arm does not have any official C++/ROS/Gazebo interfaces, so no simulation/driver for robotics community.
Choreograph
Choreograph is a web based interface for Eva arm. It can be accessed via the ip of the robot i.e. currently for my setup(connected to robot's wifi) it's 172.16.172.1/dashboard. Within the choreograph interface different ports of the robot, status, driving modes as well as programming can be done. Here from the Choreograph one can also check/set the input and output ports. For example the scenario tested here alongisde arm is a soft gripper(details in the next section) for handling of deformable objects, can be easily set to different modes i.e. grip, realease, suction cup active. The diagram below shows the main control panel of the Choreograph for the Eva robotic arm.
To use the available functionalities in the Choreograph, one should always acquire its lock almost to the top right with Config. This make sures that one user can control the robot at a time. Most of the controls in the Choreograph are self explainatory like setting in servo angles in the Go To tab setting input and output states in the respective tabs. Viewer on the top left corner is where actual robot program is done and the toolpath of the robot are shown alongside the actual robot pose.
Python SDK
Eva Python SDK is supported for Python3.6 or later. The major object in the SDK is Eva. This actually is responsible for the robot state and communication at any instance of time. When initialized Eva object creates a connection to the robot via a websocket. Later any point in time it updates the robot state depending upon the update message from the websocket. Eva also have methods for get/set gpio's at the moment they are 10, 2 for analog, 4 for digital and 2 for end effector(both in analog and digital). A small example in Eva SDK[1]:
{python}
#!/usr/bin/env python3
from evasdk import Eva
import json
# This example shows usage of the Eva object, used for controlling Eva,
# reading Eva's current state and responding to different events triggered
# by Eva's operation.
host_ip = input("Please enter a Eva IP: ")
token = input("Please enter a valid Eva token: ")
eva = Eva(host_ip, token)
# Send Eva to a waypoint
with eva.lock():
eva.control_wait_for_ready()
eva.control_go_to([0, 0, 0, 0, 0, 0])
# Print Eva's toolpaths
toolpaths = eva.toolpaths_list()
outToolpaths = []
for toolpathItem in toolpaths:
toolpath = eva.toolpaths_retrieve(toolpathItem['id'])
outToolpaths.append(toolpath)
print(json.dumps(outToolpaths))
# Create a basic toolpath and execute it
toolpath = {
"metadata": {
"version": 2,
"default_max_speed": 0.25,
"payload": 0,
"analog_modes": {
"i0": "voltage",
"i1": "voltage",
"o0": "voltage",
"o1": "voltage"
},
"next_label_id": 3
},
"waypoints": [{
"label_id": 1,
"joints": [0, 0.5235987755982988, -1.7453292519943295, 0, -1.9198621771937625, 0]
}, {
"label_id": 2,
"joints": [0.18392622441053394, 0.8259819316864014, -2.050006151199341, 0.1785774528980255, -1.6037521743774412, -0.549331545829773]
}],
"timeline": [{
"type": "home",
"waypoint_id": 0
}, {
"type": "trajectory",
"trajectory": "joint_space",
"waypoint_id": 1
}, {
"type": "trajectory",
"trajectory": "joint_space",
"waypoint_id": 0
}]
}
with eva.lock():
eva.control_wait_for_ready()
eva.toolpaths_use(toolpath)
eva.control_home()
eva.control_run(loop=1)
3 Finger Wegard GmbH Soft-Gripping
SoftGripping's gripper here demosntrated is a 3 finger module. These grippers are quite modular and can be adapted to specific robots and situations. These grippers have various configurations for the fingers and can be easily adapted to various situations for deforamble, solid and safe manipulation.
The gripper has three modes of control:
1. Finger release
2. Finger grip
3. Suction cup activate
These gripper are air pressure controlled and need a compressor seperately. It comes with a control box. Compressor is connected to control box and than to the gripper. The nice side of the this gripper is that it don't need any software driver to work just configure and use. But every thing has pros and cons you won't get any force/torque applied to the object to grip. To control the gripper, the IO connection from control box can be used actiavate the respective cables(White -> finger release, Green -> finger grip, Grey -> suction cup activate, Brown -> ground). In our case these connections are done in the digital ports of the IO board of Eva arm(D01 -> Ground(Brown), D02 -> White(finger release), D03 -> Green(finger grip), D04 ->
Pick and Place Task
Just by using Choreograph from the Eva arm a simple pick and place task accomplished. The same connections for the gripper are used as stated above. A nice thing here is one can see the the total toolpath completion time and see the trajectory followed by end-effector. In the following program different outputs are set to control the gripper for pick and place. To run the program in the choreograph one need to 'Upload the current toolpath', send the robot to 'Home' and 'Run the uploaded toolpath'(Control buttons in right upper corner of the Choreograph).
References
1. Automata-Tech, automata-tech/eva_python_sdk https://github.com/automatatech/eva_python_sdk
2. SoftGrippers for hard challenges, https://soft-gripping.com/