firefoxmetzger / scikit-bot Goto Github PK
View Code? Open in Web Editor NEWRobotics in Python
License: Apache License 2.0
Robotics in Python
License: Apache License 2.0
This is likely a more general bug in the generation of XSD from meta-SDF. It looks as if the required
tag is not overwritten correctly when an element is //include
d in the meta-SDF.
Ignition uses ign-transport
to communicate between different parts of the library, and we can introspect this communication using ropy.Subscriber
.
Under the hood, this uses a mix of zmq and the ignition CLI (via subprocess
) to make itself known to ignition and to start receiving messages. The main reason why this isn't implemented cleaner is that I didn't find documentation on how topic discovery works in ignition. However, there appears to be some documentation (living here) that describes how ignition passes messages around to discover topics.
A great addition would be to implement this discovery protocol here, so that we can cleanly interface with Ignition.
Possible related issue: gazebosim/gz-transport#225
when running tests, the file ropy/ignition/tests/test_subscriber.py
produces a lingering process every time ignition gazebo is started to test subscription.
It will be better if the test could clean up after itself and remove any child and grandchild processes.
If a pose element is omitted, it is set to the default value "0 0 0 0 0 0"
; however it should be set to a pose object with pose.value = "0 0 0 0 0 0"
instead.
Reproducing example:
import skbot.ignition as ign
sdf_root = ign.sdformat.loads(
"""<?xml version="1.0" ?>
<sdf version="1.8">
<model name="some_name">
<link name="link1">
<pose relative_to="frame1">1 0 0 0 0 0</pose>
</link>
<frame name="frame1" />
</model>
</sdf>
"""
)
print(sdf_root.model.frame[0].pose)
# prints: "0 0 0 0 0 0"
Testing the ignition interface opens the simulator to interface with it. Currently, this is done via subprocess.Popen
and without any checks that the simulator is ready. Instead, we just time.sleep(3)
and hope it will have initialized after this time. This works most of the time, but might randomly break. It also wastes time as the test may wait much longer than it needs to.
What is needed is a mechanism to detect if ignition is running and has finished initializing.
See for example:
The type of the attribute is not extracted and a new-line is missing at the beginning of the description. This is likely an xsData bug.
Currently ropy.transform
has functions for rigid body transformations (i.e. coordinate transformation, translation + rotation), and N-dimensional rotations. A welcome addition would be to add functions that allow easy access to other basic transformations.
The following functions are still needed:
tf.translation
N-dimensional translationtf.scaling
N-dimensional scaling (scale each dimension differently)tf.uniform_scaling
scale each dimension by the same factor (i.e. update scale parameter)tf.reflection
N-dimensional reflectiontf.shear
N-dimensional shearingThe version agnostic SDFormat bindings are an effort to make SDFormat backward compatible at the python level.
The idea is that you can load any version of SDFormat into a version-agnostic object tree, and then consume this tree as if it were in any (other) SDFormat version. In other words, if you have written an algorithm that assumes SDFormat v1.6 then this algorithm should also work when you input SDFormat v1.4 or SDFormat v1.8 .
The current implementation supports reading SDFormat into an object tree, and conversion of that tree into a pose graph (A tutorial will hopefully come soon(TM).)
Currently, the important elements (model, joint, link, frame) are implemented; however, less frequently used elements still need implementation. Below is a TODO list of all the elements (up to v1.8) that need implementation. Implementation is needed for all elements that are not checked.
If you need/want a specific element, feel free to comment on this issue. If you are interested in contributing a missing element, please also comment here to avoid duplicate effort.
Element Status:
In addition to a perspective projection via perspective_frustum
there are a few more functions that are viable to include:
perspective_focal(focal_length, image_shape)
which is the same as perspective_frustum
but takes the focal_length
directlyparallel(direction, image_shape)
which gives us access to the family of parallel projectionsstereographic(radius, image_shape)
which gives us access to stereographic projectionsperspective_frustum
in N dimensionsBonus points if we can write them in a general, N-dimensional way. This would give us some really nice visualization power for higher dimensional spaces (e.g. joint-space). In this case, the proposed signature may have to change.
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.