summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-31 05:31:51 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-31 05:31:51 +0000
commit7d5837ac12b1d0428529e987b925d3c38edf6758 (patch)
tree43da079bed7470194047effffe0a6060b574b61f
parent1aed0c68f8fd06204ba3f8a67af49712a0961899 (diff)
automatic import of python-moteus
-rw-r--r--.gitignore1
-rw-r--r--python-moteus.spec380
-rw-r--r--sources1
3 files changed, 382 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..24e5a2c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/moteus-0.3.54.tar.gz
diff --git a/python-moteus.spec b/python-moteus.spec
new file mode 100644
index 0000000..979e85a
--- /dev/null
+++ b/python-moteus.spec
@@ -0,0 +1,380 @@
+%global _empty_manifest_terminate_build 0
+Name: python-moteus
+Version: 0.3.54
+Release: 1
+Summary: moteus brushless controller library and tools
+License: Apache Software License
+URL: https://github.com/mjbots/moteus
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/15/ef/67e1d26f0d9871dafc1bfbce2578d138b151863cbd7e1db8ac4502aa6bbc/moteus-0.3.54.tar.gz
+BuildArch: noarch
+
+Requires: python3-importlib-metadata
+Requires: python3-pyelftools
+Requires: python3-pyserial
+Requires: python3-can
+Requires: python3-pywin32
+
+%description
+# Python bindings for moteus brushless controller #
+
+These bindings permit communication and control of moteus brushless
+controllers.
+
+## To use ##
+
+```
+pip3 install moteus # or 'moteus-pi3hat' on a pi3hat
+```
+
+See a simple example of the API in use at: [simple.py](examples/simple.py)
+
+## Theory ##
+
+Interactions with a controller are mediated through the
+`moteus.Controller` object. When constructed with the constructor
+argument `transport=None` (the default) it attempts to find some
+suitable link on your host system, typically the first fdcanusb or
+socketcan bus it locates.
+
+Single controller imperative operation can be conducted by using
+`await Controller.set_stop()`, `await Controller.set_position()`, and
+`await Controller.query()`.
+
+## Bus-optimized usage ##
+
+To optimize bus usage, it is possible to command multiple controllers
+simultaneously. In this mode, a "transport" must be manually
+constructed.
+
+```
+import asyncio
+import math
+import moteus
+
+async def main():
+ transport = moteus.Fdcanusb()
+ c1 = moteus.Controller(id = 1)
+ c2 = moteus.Controller(id = 2)
+
+ while True:
+ print(await transport.cycle([
+ c1.make_position(position=math.nan, query=True),
+ c2.make_position(position=math.nan, query=True),
+ ]))
+
+asyncio.run(main())
+```
+
+All of the "set_" methods have a "make_" variant which is suitable to
+pass to a Transport's `cycle` method.
+
+This mechanism only improves performance for non-fdcanusb links, such
+as a pi3hat.
+
+An example use of this mechanism can be found at:
+[pi3hat_multiservo.py](examples/pi3hat_multiservo.py)
+
+## Position mode commands ##
+
+`Controller.set_position` and `Controller.make_position` have
+arguments which exactly mirror the fields documented in
+`docs/reference.md`. Omitting them (or specifying None), results in
+them being omitted from the resulting register based command.
+
+* position
+* velocity
+* feedforward_torque
+* kp_scale
+* maximum_torque
+* stop_position
+* watchdog_timeout
+
+Finally, the `query` argument controls whether information is queried
+from the controller or not.
+
+## Controlling resolution ##
+
+The resolution of commands, and of returned query data, is controlled
+by optional constructor arguments to `Controller`. By default, the
+commands are all F32, and the query requests a subset of fields as
+INT16. Here is an example of setting those.
+
+```
+pr = moteus.PositionResolution()
+pr.position = moteus.INT16
+pr.velocity = moteus.INT16
+pr.kp_scale = moteus.F32
+pr.kd_scale = moteus.F32
+
+qr = moteus.QueryResolution()
+qr.mode = mp.INT8
+qr.position = mp.F32
+qr.velocity = mp.F32
+qr.torque = mp.F32
+
+c = moteus.Controller(position_resolution=pr, query_resolution=qr)
+```
+
+
+
+
+%package -n python3-moteus
+Summary: moteus brushless controller library and tools
+Provides: python-moteus
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-moteus
+# Python bindings for moteus brushless controller #
+
+These bindings permit communication and control of moteus brushless
+controllers.
+
+## To use ##
+
+```
+pip3 install moteus # or 'moteus-pi3hat' on a pi3hat
+```
+
+See a simple example of the API in use at: [simple.py](examples/simple.py)
+
+## Theory ##
+
+Interactions with a controller are mediated through the
+`moteus.Controller` object. When constructed with the constructor
+argument `transport=None` (the default) it attempts to find some
+suitable link on your host system, typically the first fdcanusb or
+socketcan bus it locates.
+
+Single controller imperative operation can be conducted by using
+`await Controller.set_stop()`, `await Controller.set_position()`, and
+`await Controller.query()`.
+
+## Bus-optimized usage ##
+
+To optimize bus usage, it is possible to command multiple controllers
+simultaneously. In this mode, a "transport" must be manually
+constructed.
+
+```
+import asyncio
+import math
+import moteus
+
+async def main():
+ transport = moteus.Fdcanusb()
+ c1 = moteus.Controller(id = 1)
+ c2 = moteus.Controller(id = 2)
+
+ while True:
+ print(await transport.cycle([
+ c1.make_position(position=math.nan, query=True),
+ c2.make_position(position=math.nan, query=True),
+ ]))
+
+asyncio.run(main())
+```
+
+All of the "set_" methods have a "make_" variant which is suitable to
+pass to a Transport's `cycle` method.
+
+This mechanism only improves performance for non-fdcanusb links, such
+as a pi3hat.
+
+An example use of this mechanism can be found at:
+[pi3hat_multiservo.py](examples/pi3hat_multiservo.py)
+
+## Position mode commands ##
+
+`Controller.set_position` and `Controller.make_position` have
+arguments which exactly mirror the fields documented in
+`docs/reference.md`. Omitting them (or specifying None), results in
+them being omitted from the resulting register based command.
+
+* position
+* velocity
+* feedforward_torque
+* kp_scale
+* maximum_torque
+* stop_position
+* watchdog_timeout
+
+Finally, the `query` argument controls whether information is queried
+from the controller or not.
+
+## Controlling resolution ##
+
+The resolution of commands, and of returned query data, is controlled
+by optional constructor arguments to `Controller`. By default, the
+commands are all F32, and the query requests a subset of fields as
+INT16. Here is an example of setting those.
+
+```
+pr = moteus.PositionResolution()
+pr.position = moteus.INT16
+pr.velocity = moteus.INT16
+pr.kp_scale = moteus.F32
+pr.kd_scale = moteus.F32
+
+qr = moteus.QueryResolution()
+qr.mode = mp.INT8
+qr.position = mp.F32
+qr.velocity = mp.F32
+qr.torque = mp.F32
+
+c = moteus.Controller(position_resolution=pr, query_resolution=qr)
+```
+
+
+
+
+%package help
+Summary: Development documents and examples for moteus
+Provides: python3-moteus-doc
+%description help
+# Python bindings for moteus brushless controller #
+
+These bindings permit communication and control of moteus brushless
+controllers.
+
+## To use ##
+
+```
+pip3 install moteus # or 'moteus-pi3hat' on a pi3hat
+```
+
+See a simple example of the API in use at: [simple.py](examples/simple.py)
+
+## Theory ##
+
+Interactions with a controller are mediated through the
+`moteus.Controller` object. When constructed with the constructor
+argument `transport=None` (the default) it attempts to find some
+suitable link on your host system, typically the first fdcanusb or
+socketcan bus it locates.
+
+Single controller imperative operation can be conducted by using
+`await Controller.set_stop()`, `await Controller.set_position()`, and
+`await Controller.query()`.
+
+## Bus-optimized usage ##
+
+To optimize bus usage, it is possible to command multiple controllers
+simultaneously. In this mode, a "transport" must be manually
+constructed.
+
+```
+import asyncio
+import math
+import moteus
+
+async def main():
+ transport = moteus.Fdcanusb()
+ c1 = moteus.Controller(id = 1)
+ c2 = moteus.Controller(id = 2)
+
+ while True:
+ print(await transport.cycle([
+ c1.make_position(position=math.nan, query=True),
+ c2.make_position(position=math.nan, query=True),
+ ]))
+
+asyncio.run(main())
+```
+
+All of the "set_" methods have a "make_" variant which is suitable to
+pass to a Transport's `cycle` method.
+
+This mechanism only improves performance for non-fdcanusb links, such
+as a pi3hat.
+
+An example use of this mechanism can be found at:
+[pi3hat_multiservo.py](examples/pi3hat_multiservo.py)
+
+## Position mode commands ##
+
+`Controller.set_position` and `Controller.make_position` have
+arguments which exactly mirror the fields documented in
+`docs/reference.md`. Omitting them (or specifying None), results in
+them being omitted from the resulting register based command.
+
+* position
+* velocity
+* feedforward_torque
+* kp_scale
+* maximum_torque
+* stop_position
+* watchdog_timeout
+
+Finally, the `query` argument controls whether information is queried
+from the controller or not.
+
+## Controlling resolution ##
+
+The resolution of commands, and of returned query data, is controlled
+by optional constructor arguments to `Controller`. By default, the
+commands are all F32, and the query requests a subset of fields as
+INT16. Here is an example of setting those.
+
+```
+pr = moteus.PositionResolution()
+pr.position = moteus.INT16
+pr.velocity = moteus.INT16
+pr.kp_scale = moteus.F32
+pr.kd_scale = moteus.F32
+
+qr = moteus.QueryResolution()
+qr.mode = mp.INT8
+qr.position = mp.F32
+qr.velocity = mp.F32
+qr.torque = mp.F32
+
+c = moteus.Controller(position_resolution=pr, query_resolution=qr)
+```
+
+
+
+
+%prep
+%autosetup -n moteus-0.3.54
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-moteus -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.54-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..4c3ff62
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+263395aa29490294d1ecf622070c9cc8 moteus-0.3.54.tar.gz