dmklee / nuro-arm Goto Github PK
View Code? Open in Web Editor NEWLow-cost platform to explore concepts in robotic manipulation
Home Page: https://dmklee.github.io/nuro-arm/
License: MIT License
Low-cost platform to explore concepts in robotic manipulation
Home Page: https://dmklee.github.io/nuro-arm/
License: MIT License
There is probably a way to create an .exe file or a single bash script that will install everything. Even if it does not work everytime, it will make things much easier to get students up and running without having to enter lots of commands or switch to different terminals.
Long term, it might be good to look at docker..
The xArm gripper is a four bar linkage. Currently it is approximated by a prismatic joint, since this accurately models collisions for the two extreme positions: fully open and fully closed. It is possible to use constraints in pybullet to model the actual behavior which should improve the modeling accuracy.
The Hiwonder motors are able to run in continuous or servo mode. Currently they are in servo mode allowing for positional control in a range of 4 radians.
The benefits of continuous mode are:
Currently there are a lot of situations where an error occurs and it is quite confusing to a new user. Even if I have a custom error function with an interpretable message, the addition of the traceback causes it to get lost.
Known errors:
xarm_controller._read_servo_offset()
)If we can do a log file, then ask for students to submit it. That would be a great way to identify potential bugs that occur and improve the error statement interpretability
I think it would be better to structure the repo such that the user can import like import neu_ro_arm as neuro; neuro.RobotArm
.
This can be done with init files although i need to work out the details
Feature requests:
The pose detection for aruco tags currently suffers from two problems.
The robot arm handles gripper state inconsistently. Calling RobotArm.get_gripper_state
returns a linear interpolation from 0 to 1 but does not force it to be from 0 to 1. However, calling RobotArm.set_gripper_state
raises an assertion error for a gripper state outside of [0,1].
The appropriate solution is to clip values in both cases so that gripper state is always in [0,1] but no errors occur if it is outside the range.
It would be cool to support sending commands to multiple xArms at once. I think the only change required would be to provide an argument or dialog box to select among possible hid devices found. I am not sure if collision detection, as it is currently formulated, would be possible with two robots; they would have to both exist within a single simulator and the motions would have to be aligned in time
This was suggested by a student and I think would add a lot of functionality. Might need to add button for this (like Custom Row), or it can be a click option somewhat like you would change an Excel sheet
Another nice addition would be the ability to customize movement speed and add delays
The caution statement should be removed as it seems too scary.
The joint limits should be further restricted (specifically the base joint)
The speed limits should be tuned so it doesn't move too quickly even if scales are spammed
There should be the ability to toggle between passive to active mode. In active mode, the sliders move the joints, in passive mode the sliders reflect the observed positions
Maybe add xyz end effector position printout
I noticed that the servo offsets are reset when power is lost to the system. The xarm controller is currently set up under the assumption that the offsets are stored. This is obviously inconvenient because it forces the user to recalibrate every time it is powered on. Moreover, this results in a potentially unsafe movement during power up since the arm may exist in a position outside of the servo range (because position is in integer, it causes wrapping so the arm moves rapidly to the opposite end of the joint space).
Fixes to make:
XArmController.__init__
XArmController.read_command
clips the positional reading to [0,1000]Currently, setup_xarm and setup_camera use terminal input. I think this is a bit confusing to users who are not familiar with Python. It seems better to switch to using a small pop up window with tkinter where we can optionally show photos.
Along with this change, we should improve the error messages produced and the ability to handle closing the window prematurely
The monitor function is currently not tuned for the robot, resulting in the monitor function terminated early or taking a long time.
In commit b2f495f, there was code introduced to specify serial number while connecting to the xArm (to allow the user to control multiple arms at once). However, the functionality for Mac and Windows was not tested and appears to fail.
Either remove support for multiple arms or test that it works on these operating systems
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.