终于搞清楚这个扫地机用什么框架了!2024第八拆来了

大家好,我是喜欢各种拆机的小鱼,今天又拆了个 USB-CAN 隔离收发器,发现这个模块的隔离做的真的很不错。先放个图,后面抽空再给大家分享。

图片

今天接着昨天的拆机,昨天放了一个配置文件 ruby_chassis.cfg 的内容,今天经过后台小伙伴的指导,知道了这个文件和机器人框架robot-player有关系。

这一点也很符合之前我们看到的动态链接库。

root@rockrobo:/opt/rockrobo/cleaner/lib# ls
libNavDriver.so      libpkginfoapi.so    libplayerdrivers.so    libplayerutil.so    librrlocale.so           librubysupport.so
libblcommon.so       libplayerc++.so     libplayerinterface.so  libplayerwkb.so     librrlog.so              libuart_api.so
libcares.so.2        libplayerc.so       libplayerjpeg.so       libroboipc.so       librrslamdrv.so          libuart_api.so.3
libcares.so.2.1.0    libplayercommon.so  libplayertcp.so        librrcurl.so.4      librubycompassdriver.so  libuart_api.so.3.2.1
libchassisdriver.so  libplayercore.so    libplayerudp.so        librrcurl.so.4.3.0  librubylaserdriver.so

小鱼去查了一下,真的发现了这个开源库。

https://github.com/playerproject/player

图片

小鱼大概翻了一下代码,找了个简单的 Python 例子

这个例子是发送角速度线速度进行控制

import math
from playerc import *


# Create a client object
c = playerc_client(None, 'localhost', 6665)
# Connect it
if c.connect() != 0:
  raise playerc_error_str()


# Create a proxy for position2d:0
p = playerc_position2d(c,0)
if p.subscribe(PLAYERC_OPEN_MODE) != 0:
  raise playerc_error_str()


# Retrieve the geometry
if p.get_geom() != 0:
  raise playerc_error_str()
print 'Robot size: (%.3f,%.3f)' % (p.size[0], p.size[1])


# Create a proxy for laser:0
l = playerc_laser(c,0)
if l.subscribe(PLAYERC_OPEN_MODE) != 0:
  raise playerc_error_str()


# Retrieve the geometry
if l.get_geom() != 0:
  raise playerc_error_str()
print 'Laser pose: (%.3f,%.3f,%.3f)' % (l.pose[0],l.pose[1],l.pose[2])


# Start the robot turning CCW at 20 deg / sec
p.set_cmd_vel(0.0, 0.0, 20.0 * math.pi / 180.0, 1)

重点来了

c = playerc_client(None, 'localhost', 6665)

6665 ,记得昨天扫描端口的时候看到的这个吗?

Not shown: 9998 closed tcp ports (conn-refused)
PORT     STATE SERVICE
22/tcp   open  ssh
6665/tcp open  irc

irc 服务,原来是player提供的

那我们连上后是不是可以直接控制呢?

明天试试

今天继续看看昨天的配置文件

继续看框架源码

在 config 里,随便打开一个配置文件,可以看到下面的内容

driver
(
  name "p2os"
  provides ["odometry::position:1"]
  port "/dev/ttyS0"
)
driver
(
  name "sicklms200"
  provides ["laser:0"]
  port "/dev/ttyS1"
)
driver
(
  name "mapfile"
  provides ["map:0"]
  filename "mymap.pgm"
  resolution 0.1
)
driver
(
  name "amcl"
  provides ["localize:0"]
  requires ["odometry::position:1" "laser:0" "laser::map:0"]
)
driver
(
  name "vfh"
  provides ["position:0"]
  requires ["position:1" "laser:0"]
  safety_dist 0.1
  distance_epsilon 0.3
  angle_epsilon 5
)
driver
(
  name "wavefront"
  provides ["planner:0"]
  requires ["position:0" "localize:0" "map:0"]
  safety_dist 0.15
  distance_epsilon 0.5
  angle_epsilon 10
)

这个的格式和昨天看到的这个扫地机器人上的一样

所以要分析昨天的文件,就要学会大概这个框架怎么用

利用这个框架,应该也能控制机器人动起来,拿到雷达数据之类的(你说改改能不能换个系统装ROS2呢?)

今天就简单的介绍下这个 Player 框架

跨平台机器人设备接口和服务器。

关于Player

Player是用于机器人控制的网络服务器。在您的机器人上运行,Player通过IP网络为机器人的传感器和执行器提供了一个干净简单的界面。您的客户端程序通过TCP套接字与Player通信,从传感器读取数据,向执行器写入命令,并动态配置设备。

Player支持各种机器人硬件。最初的Player平台是ActivMedia Pioneer 2系列,但支持其他几个机器人和许多常见的传感器。Player的模块化架构使得添加对新硬件的支持变得容易,活跃的用户/开发者社区贡献了新的驱动程序。

Player可以在Linux(PC和嵌入式)、Solaris、BSD和Windows上运行。

明天看看能不能控制这个机器人!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值