问题标签 [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.

0 投票
2 回答
13117 浏览

python - 在 ROS 中使用来自多个主题的数据 - Python

我能够显示来自两个主题的数据,但我无法在 ROS(用 Python 代码编写)中实时使用和计算来自这两个主题的数据。

您是否有任何想法来存储这些数据并实时计算?

谢谢 ;)

0 投票
0 回答
770 浏览

python - 在 Python 中读取光学正交编码器的最有效算法

我正在做一个项目,我对 3 个带有光学正交编码器的电机使用 PD 控制,效率是必须的,因为我不想丢失一些计数并破坏定位。

首先,我创建了一个名为 CMotor 的类,我在其中定义了一些属性和方法。在这些方法中,我定义了 RotaryDeal,它负责处理计数。

一开始它看起来像这样:

为了使用它,我导入了这个文件并创建了一个名为 M3 的对象。然后:

尽管如此,我的代码效率不高,无法与多个电机一起工作,而且在使用 rospy 时效率也变得非常低。这就是为什么我尝试使用这里建议的 add_event_detect

我终于得到了这样的东西:

并这样称呼它:

尽管它应该更有效,但它却恰恰相反。当我试图转动它时,我得到了与原来完全不同的结果。如果您阅读全部 4 种情况,它应该每转读取 3200 个计数,但是“高效”算法正在失去我所有的计数。此外,我旋转转子的速度越快,它错过的计数就越多。

请,如果有一种更有效的方式来读取编码器的所有四种情况下的计数,或者我自己犯了一个错误,如果你发布它,我会非常感激。

PD.:对于那些不明白我在 4 种情况下的意思的人:

PD 2:我将使用 rospy 并将此计数发送到主题,并且发布过程会消耗一些时间,因此我需要代码尽可能高效

0 投票
1 回答
398 浏览

python - Python 多处理图像压缩 - 只有一个 CPU 100%

我有一个 python 脚本,它将:

  1. 遍历给定目录中的 rosbags
  2. 每个非图像消息直接复制到新包中,每个图像消息将被压缩并添加到新包中

我决定制作这个脚本的新版本以加快速度。我的新脚本可以:

  1. 遍历给定目录中的 rosbags
  2. 每条非图片消息直接复制到新包中
  3. 每个图像消息都添加到队列中
  4. 处理完包中的所有消息后,我创建从队列中读取、压缩图像并将其添加到完成列表的进程。
  5. 循环完成列表以将压缩图像添加到新包中

我创建的代码有一些问题。

  1. 只有一个 CPU 似乎处于 100% 使用率。
  2. 当它移动到下一个 rosbag 时,内存使用率仍然很高。好像有些东西没有被删除。

我不相信需要 ROS 知识来解决这个问题。我是否正确使用了多处理库?

更新 1:按要求提供 MVP。它似乎使用所有核心......

更新2:我认为我写的代码是正确的。正如罗斯在评论中所说,它很可能在队列中序列化。我添加了评论以确认他写的内容。看起来只使用了两个进程,然后降为一个。我认为对象太大,无法使程序具有多个进程。

0 投票
0 回答
79 浏览

python - 如何编写非阻塞服务器?

在使一个ros和一个基于 python 的 http 服务器工作遇到很多麻烦之后,我还有另一个问题是结合两个不同的代码。

到目前为止,这是我编写的用于编写发布ros主题但同时响应 http 服务器的代码的内容。问题是服务器没问题,除非我更换

使其无阻塞。然后服务器没有响应。有什么办法可以解决这个问题,同时保持代码不阻塞?


顺便说一句,在 ROS 中,这段代码应该通过

从 bash 调用会导致错误。除非您删除ROS- 相关代码。

0 投票
2 回答
103 浏览

python - Python 2.7 中的代码退出问题

我正在研究 ROS,我已经Python 2.7在菜单中编写了代码,我要求用户选择选项 1 或 2。任务完成后,当我按 时Ctrl+c,而不是退出代码,它会再次显示菜单,而不是退出。再次在这里,如果我在 1 或 2 之间进行选择,它会一次又一次地打印菜单。

Ctrl+c为了在我按下而不是一次又一次地显示菜单时 退出代码,建议对代码进行哪些更改?

问题的代码和屏幕截图如下:

**错误截图**

0 投票
1 回答
180 浏览

python - 具有不可序列化类的多线程多处理

我有一个 python 类,它通过 ROS 服务与模拟环境进行通信。现在我想与多个模拟并行通信。

详细地说,环境类有一个阶梯函数,它接受一个参数并返回模拟观察结果:

当然,我现在得到以下错误

cPickle.PicklingError: Can't pickle : attribute lookup builtin .instancemethod failed

因为 ROSPy 服务是Environment

是否可以在池本身中创建环境?还是切换到 python 线程有帮助?

0 投票
1 回答
2378 浏览

python - ROS catkin 工作区中的 Python 模块和子模块

我正在尝试在 ROS 中运行 python 代码,它包含一个我必须 pip 安装的模块(不是为 ROS 制作的模块)。当我尝试在运行 roscore 的 catkin 工作区中运行代码时,它找不到我安装的模块并给我一个 ImportError。关于如何使用 rospy 在 ROS 上运行已经创建的模块的任何想法?

0 投票
3 回答
2546 浏览

python-3.x - python3异步等待回调

我试图弄清楚如何使用 rospy actionlib 和 asyncio 来异步等待操作结果。为此,我尝试编写一个动作执行生成器,但现在还没有成功。我的想法是为done_callback动作添加一个 asyncio 未来,但未来似乎永远不会最终完成。

代码在这里:

0 投票
0 回答
1436 浏览

python - 名称“rospy”未定义

我正在尝试使用 rosrun 运行一个名为 - SpartonCompassIMU 的 ros 包。我执行以下操作:

它给出了以下错误:

当我运行 python 2.7 并输入:

它工作得很好

我怎样才能解决这个问题?

0 投票
0 回答
157 浏览

python - Tensorflow 的 tf.get_default_session() 在 ROS 订阅者回调中返回 None

我正在尝试在 ROS 订阅者回调中运行一个小型神经网络。self.sess.run()如果self.sess被定义为类成员,我可以通过 获得输出。但是,如果我尝试在 ROS 订阅者回调中获取会话,使用tf.get_default_session()它会返回一个None.

有什么方法可以在 ROS 回调中获取会话实例,而不将其声明为类成员?