问题标签 [rospy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 ROS 中使用来自多个主题的数据 - Python
我能够显示来自两个主题的数据,但我无法在 ROS(用 Python 代码编写)中实时使用和计算来自这两个主题的数据。
您是否有任何想法来存储这些数据并实时计算?
谢谢 ;)
python - 在 Python 中读取光学正交编码器的最有效算法
我正在做一个项目,我对 3 个带有光学正交编码器的电机使用 PD 控制,效率是必须的,因为我不想丢失一些计数并破坏定位。
首先,我创建了一个名为 CMotor 的类,我在其中定义了一些属性和方法。在这些方法中,我定义了 RotaryDeal,它负责处理计数。
一开始它看起来像这样:
为了使用它,我导入了这个文件并创建了一个名为 M3 的对象。然后:
尽管如此,我的代码效率不高,无法与多个电机一起工作,而且在使用 rospy 时效率也变得非常低。这就是为什么我尝试使用这里建议的 add_event_detect
我终于得到了这样的东西:
并这样称呼它:
尽管它应该更有效,但它却恰恰相反。当我试图转动它时,我得到了与原来完全不同的结果。如果您阅读全部 4 种情况,它应该每转读取 3200 个计数,但是“高效”算法正在失去我所有的计数。此外,我旋转转子的速度越快,它错过的计数就越多。
请,如果有一种更有效的方式来读取编码器的所有四种情况下的计数,或者我自己犯了一个错误,如果你发布它,我会非常感激。
PD.:对于那些不明白我在 4 种情况下的意思的人:
PD 2:我将使用 rospy 并将此计数发送到主题,并且发布过程会消耗一些时间,因此我需要代码尽可能高效
python - Python 多处理图像压缩 - 只有一个 CPU 100%
我有一个 python 脚本,它将:
- 遍历给定目录中的 rosbags
- 每个非图像消息直接复制到新包中,每个图像消息将被压缩并添加到新包中
我决定制作这个脚本的新版本以加快速度。我的新脚本可以:
- 遍历给定目录中的 rosbags
- 每条非图片消息直接复制到新包中
- 每个图像消息都添加到队列中
- 处理完包中的所有消息后,我创建从队列中读取、压缩图像并将其添加到完成列表的进程。
- 循环完成列表以将压缩图像添加到新包中
我创建的代码有一些问题。
- 只有一个 CPU 似乎处于 100% 使用率。
- 当它移动到下一个 rosbag 时,内存使用率仍然很高。好像有些东西没有被删除。
我不相信需要 ROS 知识来解决这个问题。我是否正确使用了多处理库?
更新 1:按要求提供 MVP。它似乎使用所有核心......
更新2:我认为我写的代码是正确的。正如罗斯在评论中所说,它很可能在队列中序列化。我添加了评论以确认他写的内容。看起来只使用了两个进程,然后降为一个。我认为对象太大,无法使程序具有多个进程。
python - 如何编写非阻塞服务器?
在使一个ros
和一个基于 python 的 http 服务器工作遇到很多麻烦之后,我还有另一个问题是结合两个不同的代码。
到目前为止,这是我编写的用于编写发布ros
主题但同时响应 http 服务器的代码的内容。问题是服务器没问题,除非我更换
和
使其无阻塞。然后服务器没有响应。有什么办法可以解决这个问题,同时保持代码不阻塞?
顺便说一句,在 ROS 中,这段代码应该通过
从 bash 调用会导致错误。除非您删除ROS
- 相关代码。
python - 具有不可序列化类的多线程多处理
我有一个 python 类,它通过 ROS 服务与模拟环境进行通信。现在我想与多个模拟并行通信。
详细地说,环境类有一个阶梯函数,它接受一个参数并返回模拟观察结果:
当然,我现在得到以下错误
cPickle.PicklingError: Can't pickle : attribute lookup builtin .instancemethod failed
因为 ROSPy 服务是Environment
是否可以在池本身中创建环境?还是切换到 python 线程有帮助?
python - ROS catkin 工作区中的 Python 模块和子模块
我正在尝试在 ROS 中运行 python 代码,它包含一个我必须 pip 安装的模块(不是为 ROS 制作的模块)。当我尝试在运行 roscore 的 catkin 工作区中运行代码时,它找不到我安装的模块并给我一个 ImportError。关于如何使用 rospy 在 ROS 上运行已经创建的模块的任何想法?
python-3.x - python3异步等待回调
我试图弄清楚如何使用 rospy actionlib 和 asyncio 来异步等待操作结果。为此,我尝试编写一个动作执行生成器,但现在还没有成功。我的想法是为done_callback
动作添加一个 asyncio 未来,但未来似乎永远不会最终完成。
代码在这里:
python - 名称“rospy”未定义
我正在尝试使用 rosrun 运行一个名为 - SpartonCompassIMU 的 ros 包。我执行以下操作:
它给出了以下错误:
当我运行 python 2.7 并输入:
它工作得很好
我怎样才能解决这个问题?
python - Tensorflow 的 tf.get_default_session() 在 ROS 订阅者回调中返回 None
我正在尝试在 ROS 订阅者回调中运行一个小型神经网络。self.sess.run()
如果self.sess
被定义为类成员,我可以通过 获得输出。但是,如果我尝试在 ROS 订阅者回调中获取会话,使用tf.get_default_session()
它会返回一个None
.
有什么方法可以在 ROS 回调中获取会话实例,而不将其声明为类成员?