pollen-robotics / reachy-2019 Goto Github PK
View Code? Open in Web Editor NEWOpen source interactive robot to explore real-world applications!
Home Page: https://www.pollen-robotics.com
Open source interactive robot to explore real-world applications!
Home Page: https://www.pollen-robotics.com
The dxl_config.py tool doesn't work with MX-106 and MX-64 motors because their baud rate is 57600bps.
It works well with AX-18 motors whose baud rate is 1Mbps
I tried to connect to Reachy using the commands:
from reachy import Reachy, parts
PORT = "/dev/ttypACM0"
reachy = Reachy(
right_arm=parts.arm.RightArm(
luos_port=PORT,
hand='force_gripper',
),
)
but I get the error:
Traceback (most recent call last):
File "move_and_grap.py", line 8, in <module>
hand='force_gripper',
File "/home/seb/workspace/reachy/software/reachy/parts/arm.py", line 194, in __init__
hand=hand)
File "/home/seb/workspace/reachy/software/reachy/parts/arm.py", line 42, in __init__
self.luos_io = SharedLuosIO.with_gate(f'r_{side}_arm', luos_port)
File "/home/seb/workspace/reachy/software/reachy/io/luos.py", line 86, in with_gate
return cls(port_template)
File "/home/seb/workspace/reachy/software/reachy/io/luos.py", line 45, in __init__
io = attempt_luos_connection(luos_port)
File "/home/seb/workspace/reachy/software/reachy/io/luos.py", line 15, in attempt_luos_connection
io = LuosIO(port, log_conf='')
File "/home/seb/.local/lib/python3.6/site-packages/pyluos/robot.py", line 60, in __init__
*args, **kwargs)
File "/home/seb/.local/lib/python3.6/site-packages/pyluos/io/__init__.py", line 56, in io_from_host
raise ValueError('No corresponding IO found (among {}).'.format(discover_hosts))
ValueError: No corresponding IO found (among <function discover_hosts at 0x7fbbb23f4378>).
My versions :
The file /dev/ttyACM0 exists when the robot is connected to the computer
Do you have an idea of what's going on ?
Thank you
Problem:
When Orbita's modules have not the right names to control it, we need to rename them individually before using it.
Solution:
A tool which rename automatically the gate and the 3 DC motor modules when we start using Orbita.
We'll need to
Waiting for Luos-io/Pyluos#52
At the moment, after connecting to a Luos gate, we wait 1s to make sure that we received a first state and that our variables are correctly setup.
We should implement a real wait mechanism with a timeout. It will speed up the process and be more reliable.
Describe the bug
Missing module pyluos.modules when importing reachy in Python.
To Reproduce
Steps to reproduce the behavior:
pip3 install reachy
python3
from terminal (Python version: 3.8.5)import reachy
or from reachy import parts, Reachy
Expected behavior
Clear import with no error.
Screenshots
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import reachy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "$HOME/.local/lib/python3.8/site-packages/reachy/__init__.py", line 11, in <module>
from .reachy import Reachy # noqa: F401
File "$HOME/.local/lib/python3.8/site-packages/reachy/reachy.py", line 9, in <module>
from .parts import LeftArm, RightArm, Head
File "$HOME/.local/lib/python3.8/site-packages/reachy/parts/__init__.py", line 10, in <module>
from .arm import LeftArm, RightArm # noqa
File "$HOME/.local/lib/python3.8/site-packages/reachy/parts/arm.py", line 13, in <module>
from .hand import LeftEmptyHand, RightEmptyHand, LeftForceGripper, RightForceGripper, OrbitaWrist
File "$HOME/.local/lib/python3.8/site-packages/reachy/parts/hand.py", line 15, in <module>
from .part import ReachyPart
File "$HOME/.local/lib/python3.8/site-packages/reachy/parts/part.py", line 8, in <module>
from ..io import IO, luos, ws
File "$HOME/.local/lib/python3.8/site-packages/reachy/io/luos.py", line 8, in <module>
from pyluos.modules import DynamixelMotor
ModuleNotFoundError: No module named 'pyluos.modules'
>>>
Environment (please complete the following information):
ATM we have angle limits and offset in "dynamixel" coordinates systems.
Read/Write position are in our modified coordinates systems. We should make all this clearer and documented.
If you do not pay attention while pulling the repo, you may loose your zero configuration file.
Add an option to start Reachy without using the camera
Reachy package cannot import pylous.modules. Likely because most recent version of pylous (1.4.1) renamed modules to containers.
To reproduce:
from reachy import parts, Reachy
r = Reachy(
right_arm=parts.RightArm(io='ws', hand='force_gripper'),
left_arm=parts.LeftArm(io='ws', hand='force_gripper'),
)
To fix:
Change line 8 in luos.py to:
from pyluos.containers import DynamixelMotor
There is a typo in https://github.com/pollen-robotics/reachy/blob/90c9ba7eb603e19950cdc3226c94fb386b31777d/software/reachy/parts/motor.py#L150
"Acutator" instead of "Actuator"
Reachy installation is out-dated https://pollen-robotics.github.io/reachy-docs/docs/getting-started/install-your-robot/
We should update the last photo with one of these: https://photos.app.goo.gl/CQaccomnM4KLzNTSA
If you're using the simulation tool (http://playground.pollen-robotics.com) with the version 1.3.0 of Reachy's software, the head will not work. The command reachy = Reachy( head=parts.Head(io='ws'), )
will result in the following
A temporary fix is to downgrade the software to version 1.2.3.
At the moment the code to control Orbita is split between this repo and https://github.com/pollen-robotics/orbita in a rather arbitrary way.
We should have
Does using a fixed delay in Luos gates improve overall communication?
We could theoretically set a delay of 5-10ms:
gate.delay_ms = 5
We should provide the various URDF file for the different parts ? versions of Reachy so users can import it in Gazebo or other simulators.
Setup a proper workflow to generate a working ISO from Scratch.
Hello! We just connected Reachy's arm and are trying to interact with it using a raspberry pi. We followed the instructions here and connected the arm to the pi through the USB cable provided.
Here is the code we are running:
from reachy import Reachy, parts
reachy = Reachy(
left_arm=parts.LeftArm(
io='/dev/ttyUSB0',
hand='force_gripper',
),
)
reachy.left_arm.shoulder_pitch.compliant = True
reachy.left_arm.shoulder_roll.compliant = True
reachy.left_arm.arm_yaw.compliant = True
reachy.left_arm.elbow_pitch.compliant = True
reachy.left_arm.hand.forearm_yaw.compliant = True
reachy.left_arm.hand.wrist_pitch.compliant = True
reachy.left_arm.hand.wrist_roll.compliant = True
current_arm_position = {
motor.name: motor.present_position for motor in reachy.left_arm.motors
}
print(current_arm_position)
But we keep getting:
Traceback (most recent call last):
File "readpos.py", line 6, in <module>
hand='force_gripper',
File "/home/pi/dev/reachy/software/reachy/parts/arm.py", line 217, in __init__
hand=hand)
File "/home/pi/dev/reachy/software/reachy/parts/arm.py", line 46, in __init__
ReachyPart.__init__(self, name=f'{side}_arm', io=io)
File "/home/pi/dev/reachy/software/reachy/parts/part.py", line 34, in __init__
self.io = luos.SharedLuosIO.with_gate(gate_name, io)
File "/home/pi/dev/reachy/software/reachy/io/luos.py", line 90, in with_gate
raise LuosGateNotFoundError(f'Gate "{name}" not found on ports "{port_template}"')
reachy.error.LuosGateNotFoundError: Gate "r_left_arm" not found on ports "/dev/ttyUSB0"
We have enabled I2C and serial communication on the pi through sudo raspi-config
.
Is there something obvious we are missing?
Thanks in advance!
Right now, parts are always created using the same parameter. For instance, a right arm will be created using:
ra = parts.RightArm(luos_port='/dev/ttyUSB*', hand='force_gripper')
Shall we make the luos_port default to '/dev/ttyUSB*'?
Using goto with inverse kinematics could be simpler if we add a high level function doing the mapping between reachy joints and IK results.
It could be done with a more general goto at the part level taking the list of joints as input such as:
reachy.right_arm.goto([list of motors goal positions], duration, wait,...)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.