ROS在EduMIP自平衡机器人上启动

引言


本出版物提供了有关在EduMIP移动机器人上安装和运行机器人操作系统(ROS)的说明。 EduMiP是围绕BeagleBone Black构建的自平衡机器人,带有机载微处理器和James Strawson和Thomas Bewley教授与UCSD协调机器人实验室及其工作人员合作开发的Beaglebone Black机器人披风。 BeagleBone Blue,最近于2017年中期发布,将BeagleBone Black和Robotics Cape的功能整合在一块板上。 Bewley教授在其MAE144课程中使用了该机器人-UCSD机械与航空航天工程系的嵌入式控制与机器人。
我在评论中回答问题。

组件清单


请注意,您需要一个Baglebone Blue或Beaglebone Black和Robotics Cape的每个。

  • Beaglebone Blue(BBBL) :最近于2017年中发布,在单板计算机上结合了BeagleBone Black和Robotics Cape的功能。

  • Beaglebone Black(BBB) :面向开发人员和业余爱好者的低成本社区支持平台,配备AM335x 1 GHz ARM Cortex处理器,512 MB DDR3 RAM,板上4 GB 8位emmc。
  • Robotics Cape(BBB-RC) :Beaglebone Black Robotics Cape是Beaglebone Black的I / O板,它提供多个传感器和丰富的硬件支持,其中包括:

    • 传感器:

      • 9轴IMU
      • 气压计
    • I / O:

      • 4个二次编码器
      • 4个H桥电机驱动器
      • 8个伺服/ ESC输出
      • 标准DSM RC无线电接口
      • I2C UART ADC SPI GPIO PWM
      • 锂聚合物电池充电控制器

  • EduMIP套件 :该套件包括直流电动机,齿轮,编码器,车轮,塑料零件,电线和紧固件。
  • 微型SD卡 :大小至少为8GB的微型SD卡。
  • BeagleBone Black and Blue的Ubuntu 16.04 LTS图像 :j图像由Robert Nelson,Jeff O'Brian提供。 该图像包含带有预装ROS的ROS Kinetic,例如带有基本ros EduMIP软件包和预装ros的ros catkin工作站。 这是两个Ubuntu映像,请确保使用正确的映像:

    • 将此图像用于BragleBonbne Blue:

      2018_02_03_beaglebone_blue_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip
    • 将此图像用于BeagleBone Black Wireless + Robotics Cape:

      2018_02_03_beaglebone_black_wireless_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip

    将8 GB的映像压缩为2.5 GB的zip文件。 您不需要解压缩ZIP文件。 该程序(Etcher)可以即时解压缩。
  • USB记忆棒 :对于机器人系统编程课程中的教程很有用。 罗技Gamepad F310是一款不错的廉价机型

EduMIP套件的组装和测试(机器人系统#3编程课程的一部分)


如下构建和测试EduMIP。 小心点 温柔一点

1. EduMIP构建 :请按照此处提供的分步EduMIP构建说明进行操作。

观看我的俄语视频:


2. 一些附加说明:

  • 此处提供其他文档
  • 如果您正在使用BEAGLEBONE BLACK + ROBOTIC CAPE,请不要混合电源+ 5V和+ 9V: BBB的电源接口为+ 5V。 Robotics Cape具有用于+ 9V的相同Ballel电源连接器。 地狱
  • 请勿将+ 9V电源直接插入BBB上的+ 5V连接器,结果BBB将失效。
  • 不使用机器人时请关闭电源:不使用EduMIP或给电池充电时:

    从EduMIP断开12V充电电缆
    运输机器人之前,请从机器人斗篷上断开电池的连接。
  • 请勿损坏电机和ENCODER接头 Robotics用于编码器和电机的Cape接头非常小。

配置Beaglebone Black / Blue和EduMIP(ROS#3课程分配的一部分)


如下配置要在EduMIP中使用的Beaglebone Blue。

1. 检查您的BeagleBone Blue / Black板:在组装edumip之前,请测试您的beaglebone蓝板—它在4GB内部闪存驱动器中安装了Debian Jessie。

  1. 请按照此处的说明进行操作。 在Linux PC上安装udev规则。 仅使用此页面来了解如何保护LINUX PC上的UDEV规则,而忽略其他所有内容。
  2. 在Linux计算机上安装适当的udev规则后,它将通过usb0虚拟以太网适配器通过USB连接建立与BBB的以太网连接。 您的主机将位于IP地址192.167.7.1,BBB将位于192.168.7.2。 从主机到BB的SSH“ ssh debian@192.168.7.2”。 “ debian”的默认密码是“ temppwd”。
  3. 每当您完成使用BBBL的操作并准备将其关闭时,请勿仅将其关闭-运行“ sudo poweroff”命令以关闭Linux并关闭电路板的电源。 板上的所有指示灯熄灭后,断开USB电缆的连接是正常的。

2. 在您的BBBL上安装并测试具有ROS和BBBL / EduMIP支持的8gb Ubuntu 16.04 LTS Linux映像 :我们创建了一个具有ros dynamic和BBBL支持的8gb Ubuntu映像。 您的EduMIP套件有一块空白的32GB或64GB Micro-SD卡。

  1. 下载:用于ARM支持BBBL和ROS的Ubuntu 16.04现成映像,请参见上面的说明,标题为“ beaglebone黑色和蓝色的Ubuntu 16.04 LTS映像”。
  2. 您无需解压缩存档的图像。
  3. 下载Etcher:使用etcher.io下载并在您的计算机上安装Etcher -io -Etcher是用于将磁盘映像写入SD卡的程序。
  4. 将磁盘映像刻录到micro-SD卡。
  5. 小心插入Micro SD卡:将Micro SD卡插入Micro SD卡插槽和beaglebone。 请勿替换它;它只是安装时的温和提示。
  6. 下载吧! 通过使用USB电缆将BBBL连接到计算机,从Micro-SD卡映像下载BBBL。
    1. 如果Micro-SD卡包含启动映像,则BBBL将从其启动,而不是从其内置闪存驱动器启动。
    2. 在BBBL(“ ssh ubuntu@192.168.7.2”,密码为“ temppwd”)上进行SSH,并确保您实际上在32GB映像中工作。 df -h命令应显示至少2 GB的可用空间,而htop命令应显示1 GB的活动页面文件。

3. EduMIP测试 :通过以ubuntu用户身份使用密码“ temppwd”登录来检查EduMIP,如下所示:

  1. 关于错误消息的注释 :下载到我们使用的Ubuntu映像的roboticscape库的最新版本具有一些PRU错误,这些错误在调用roboticscape库以访问硬件时显示错误消息“ ERROR:pru-rproc driver missing” BBBL 我们可以忽略此警告,它将在以后的版本中修复。 运行诸如rc_balance,rc_test_encoders,edumip_balance_ros等程序时,期望看到这些警告之一。

    这是此错误消息的示例:

    ubuntu@arm:~$ rc_test_imu ERROR: pru-rproc driver missing try 'test_imu -h' to see other options Accel XYZ(m/s^2) | Gyro XYZ (rad/s) | Mag Field XYZ(uT) | Temp (C) 0.23 -3.06 9.72 | 0.0 -0.0 -0.0 | 22.9 -4.1 -54.9 | 37.9 
  2. 编码器测试 :运行rc_test_encoders命令并稍微转动轮子-您将看到E2和E3编码器显示了转数的变化。
  3. 发动机测试 :运行命令“ rc_test_motors-D 0.1”-抬起EduMIP时,两个车轮应朝相反的方向旋转。
  4. 陀螺仪校准 :将EduMIP静止放置在桌子上,然后运行rc_calibrate_gyro命令并按照说明进行操作。 该校准程序将陀螺仪校准写入/var/lib/roboticscape/gyro.cal
  5. 陀螺仪测试 :运行命令“ rc_test_imu”,并确保数据“ Gyro XYZ(rad / s)”等于零(或几乎为零)。
  6. 磁力计的校准 :运行命令“ rc_calibrate_mag”并按照说明进行操作-将要求您将EduMIP握在手中,并沿所有方向旋转(“旋转”)。 该校准程序写入磁力计校准文件/var/lib/roboticscape/mag.cal
  7. 磁力计测试 :运行rc_test_imu命令并验证XY Z磁场(uT)数据是否为非零。 在巴尔的摩和伍兹霍尔,地球磁场矢量的大小约为52uT,但是不用担心磁力计似乎有点偏离。

    您可以通过在此网页上输入邮政编码来查找巴尔的摩的纬度,经度和磁场强度。
  8. EduMIP平衡测试 :运行“ rc_balance”命令,然后启动机器人。 您的机器人必须保持平衡。



4. BBBL上的ROS测试

  1. 检查.bashrc文件。 最后,该文件应按以下顺序具有以下命令:
    首先,使用命令“ source /opt/ros/kinetic/setup.bash”配置ROS环境变量。
    其次,使用命令“ source〜/ catkin_ws / devel / setup.bash”将本地catkin工作区添加到ROS环境中(这称为“工作区覆盖”)。
  2. 运行命令“ source .bashrc”以配置ROS环境变量。 使用printenv / grep ROS命令将其签出。
  3. 确保您可以运行roscore和其他ROS实用程序。
  4. 确保可以在BBBL ROS工作区中运行“ catkin_make”。
  5. 图片已验证

5. 更新和测试ROS EduMip余额计划

  1. 如果尚未这样做,请在机器人仍在桌子上时使用“ rc_calibrate_gyro”命令校准EduMIP陀螺仪。
  2. 使用用户名“ ubuntu”和密码“ temppwd”登录到EduMIP。
  3. 在EduMIP上配置Wi-Fi:配置Wi-Fi,以便您可以从我们的git存储库中克隆ROS数据包。
  4. 如果您如上所述安装了预装的Ubuntu 16.04映像,则您将在catkin worskace的源目录中拥有“ edumip_msgs”和“ edumip_ros_balance”软件包,即〜/ catkin_ws / src / edumip_msgs和〜/ catkin_ws / src / edumip_balance_ros。 使用命令“ cd〜/ catkin_ws / src / edumip_balance_ros”和“ git pull” 更新 edumip_balance_ros 软件包 ,以下载该软件包的最新代码。 如果收到错误消息“错误:您对以下文件的本地更改将被合并覆盖:

    src / edumip_balance_ros.cpp请先提交您的更改或将其隐藏起来,然后再合并。”,然后删除干扰的src / edumip_balance_ros.cpp文件,并再次进行“ git pull”。
  5. 如果您的edumip_msgsedumip_balance_ros尚未位于EduMIP的catkin工作区的src目录中(应该为〜/ catkin_ws / src ),则将这两个ROS软件包克隆到〜/ catkin_ws / src ):
    1. edumip_msg包为EduMIP定义了自定义消息类型edumip_msf / EduMipState。 该软件包不包含源代码,仅包含消息和通信CMakeLists.txt和package.xml的定义。 如果您的计算机需要访问此类消息,则还必须在计算机上克隆项目。 该软件包独立于体系结构。 git可以从此公共URL克隆此软件包。
    2. edumip_balance_ros软件包包含edumip_ros_node C ++节点ROS.cpp,它是ROS标准化程序rc_balance的版本。 我们为您提供的linux映像已经安装了Robotics Cape和ROS驱动程序。 git可以从此公共URL克隆此软件包。
  6. 使用catkin工作区主目录中的catkin_make命令创建这两个软件包。
  7. 验证ROS现在使用以下命令了解edumip_msgs软件包中定义的用户消息:rosmsg show edumip_msgs / EduMipState
  8. 在EduMIP上打开两个远程ssh会话:

    首先,在第一个shell中运行“ roslaunch edumip_balance_ros edumip_balance_ros”
    其次,在第二个shell中,请参阅主题ros和print主题/ edumip / state。
    放好机器人,它必须保持平衡。

6. 正确关闭BBBL :完成并准备关闭BBBL时,不要只是将其关闭-运行“ sudo poweroff”命令以关闭Linux并关闭电路板的电源。 板上所有指示灯熄灭后,您可以断开USB电缆的连接。

有关BBB和BBBL的一些有用的Linux注释


  • emacs和nano编辑器已经安装在本教程提供的BBB linux映像上。
  • 缺省情况下,未安装linux实用程序“ locate”,但您可以使用“ sudo apt-get installlocate”进行安装,并使用命令“ sudo Updatedb”初始化locate数据库(需要几分钟)。
  • NTP时间服务器已安装在本课程提供的BBB linux映像上,但是仅当BBB具有到Internet的路由时(例如,当您打开WIFi时),它将被同步。 默认情况下,与计算机的网络连接USB不会路由到Internet。 您可以使用ntpq-p命令检查ntp的状态。

关于使用Ununtu 16.04和ROS设置BeagleBone Black(BBB)和beaglebone Blue(BBBL)的说明


(它们在此处列出仅供参考,不应成为完成任务3所必需的步骤)。

通过USB将PC连接到BBB

  • 请按照此处的说明进行操作
  • 在主机上安装适当的驱动程序或udev规则后,它将通过usb0虚拟以太网适配器通过USB连接与BBB建立以太网连接。 您的主机将位于IP地址192.167.7.1,BBB将为192.168.7.2。 从主机到BBB的SSH“ ssh ubuntu@192.168.7.2”。 ubuntu的默认密码是temppwd。

如何与DNS建立以太网连接以及到外部Internet的路由
WiFi(BBBL,BBB Wireless,BBB Classic + USB WiFi适配器):

  • 轻描淡写地使用 WiFi :遵循/ etc / network / interfaces文件的注释中列出的connmanctl说明。 要阅读注释,请使用命令cat / etc / network / interfaces。
  • 注意connmanctl不支持诸如Hopkins之类的公司网络,但它支持WPA / WPA2网络。
  • 注意 :加载BBBL WiFi适配器时并不总是正确的。 如果在ifconfig命令的输出中没有看到“ wlan0”,请尝试使用“ ifconfig wlan0 up”命令将BBBL手动启用为wlan0接口。 然后,您应该在ifconfig命令的输出中看到wlan0。
  • Ifconfig :使用ifconfig命令查看计算机上所有已配置的网络接口(LAN,WiFi,USB等)。
  • Iwconfig :使用“ iwconfig”命令查看计算机上所有已配置的WiFi网络接口。
  • 我是谁啊 确定Linux机器IP地址的最简单方法是登录并使用ifconfig命令。
  • Wifi土拨鼠日! 不幸的是,BBBL当前不记得WiFi设置。

首选的WiFi连接应类似于BBBL,并且您的计算机已连接到同一Wi-Fi接入点,因此您可以从计算机中进入BBBL,并且BBBL可以访问git repos等。

您还可以通过将计算机连接到BeagleBone-XXXX Wi-Fi网络(其中XXXX是BBBL所独有的)来将其直接用作BBBL的Wi-Fi接入点。 WiFi密码为“ BeagleBone”,这是一个简单的连接,但是BBBL和您的计算机都无法访问git repos等。连接后,您的计算机的IP地址为192.168.XXX.XXX BBBL IP地址将为192.168.XXX.1

更新您的BBBL Ubuntu发行版

在BBB上,运行Linux sudo apt update和sudo apt dist-upgrade Linux命令

在BBBL上安装Robotics Cape软件

  • 在上述针对BBBL的预配置Ubuntu映像中,已经提供了Robotics Cape / BBBL支持,您无需重新安装它。
  • 在ARM上的Ubuntu 16.04下进行二进制安装:“ sudo apt-get install roboticscape”
  • 从源安装

您想要在BBB上安装机器人斗篷源代码和示例代码的副本。 在这里可用。 在主目录中安装副本:

“镉〜”
“ Git克隆github.com/StrawsonDesign/Robotics_Cape_Installer.git

现在,您可以查看机械手斗篷的源代码,并按照说明编译和安装机械手斗篷库和示例程序。

为EduMIP安装基本的ROS软件包

将这两个git仓库克隆到〜/ catkin_ws / src目录中:


cd到〜/ catkin_ws并收集“ catkin_make”包。

要运行edumip_balance_ros节点,该程序需要root特权。 也许最简单的方法是在编译后,使用以下两个命令(按此顺序)更改已编译二进制文件的权限和所有权:

  • sudo chown root:根〜/ catkin_ws / devel / lib / edumip_balance_ros
  • 须藤chmod u + s〜/ catkin_ws / devel / lib / edumip_balance_ros

运行ROS节点edumip_balance_ros“ roslaunch edumip_balance_ros edumip_balance_ros.launch ”。 机器人将进行平衡,接收来自主题/ edumip / cmd命令的扭转速度消息,并将其状态发布到主题/ edumip / state ROS主题

如果在〜/ catkin_ws / src / edumip_balance_ros / launch目录中找不到edumip_balance_ros.launch启动文件 ,则如上所述,您需要“ git pull”该软件包的最新版本,然后使用“ catkin_make”重新编译源代码。

有关使用这些ROS支持的更多信息,请参见本课程网页上的第3周作业:机器人系统编程第3周作业

关于使用ROS启动EduMIP的说明


为什么在运行edumip_balance_ros时出现权限错误,该如何解决?
如果遇到诸如“无法打开:

/ sys /设备/平台/ ocp / ocp:H18_pinmux /状态
Pinmux:运行edumip_balance_ros时权限被拒绝。

使用catkin_make在edumip上编译edumip_balance_ros项目时,请编译可执行文件:

“〜/ catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros”
ubuntu @ arm:〜/ catkin_ws $ ls -l devel / lib / edumip_balance_ros /
总计272
-rwxrwxr-x 1 ubuntu ubuntu 278292 2月18日18:48 edumip_balance_ros

请注意,文件的所有者和组是ubuntu:ubuntu,并且是可执行文件(“ -rwxrwxr-x”)。

当您尝试运行此最近编译的文件时,将出现权限错误,如下所示:
ubuntu @ arm:〜/ catkin_ws $ roslaunch edumip_balance_ros edumip_balance_ros.launch
...登录到/home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2845.log
检查日志目录中的磁盘使用情况。 这可能需要一段时间。
按Ctrl-C中断
完成检查日志文件磁盘使用情况。 用量小于1GB。

启动roslaunch服务器192.168.10.102:37365 /

总结
========

参数
* / rosdistro:动力学
* / rosversion:12.1.12

节点
/
edumip_balance_ros_node(edumip_balance_ros / edumip_balance_ros)

ROS_MASTER_URI = http://192.168.10.101:11311

进程[edumip_balance_ros_node-1]:从pid [2874]开始
[INFO] [1518979862.674565427]:文件/home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp于2018年2月3日19:38:02编译。
无法打开:/ sys /设备/平台/ ocp / ocp:H18_pinmux /状态
Pinmux:权限被拒绝
无法打开:/ sys /设备/平台/ ocp / ocp:C18_pinmux /状态
Pinmux:权限被拒绝
无法打开:/ sys /设备/平台/ ocp / ocp:U16_pinmux /状态
Pinmux:权限被拒绝
无法打开:/ sys /设备/平台/ ocp / ocp:D13_pinmux /状态
Pinmux:权限被拒绝
无法打开:/ sys /设备/平台/ ocp / ocp:J15_pinmux /状态
Pinmux:权限被拒绝
无法打开:/ sys /设备/平台/ ocp / ocp:H17_pinmux /状态
Pinmux:权限被拒绝
警告:缺少PINMUX驱动程序
您可能只需要更新的内核
无法打开/开发/内存
mmap_gpio_adc.c无法初始化gpio
[INFO] [1518979862.806645002]:错误:无法初始化海角。
[edumip_balance_ros_node-1]进程已终止[pid 2874,退出代码255,cmd / home / ubuntu / catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros __name:= edumip_balance_ros_node __log:= / home / ubuntu / dd。 14dc-11e8-b293-dc5360d671c6 / edumip_balance_ros_node-1.log]。
日志文件:/home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/edumip_balance_ros_node-1*.log
机器上的所有进程均已终止,roslaunch将退出
关闭处理监视器...
...关闭处理监视器完成
做完了

这里的问题是,您的可执行文件必须以root身份而不是常规用户身份运行,才能访问BeagleBone硬件寄存器。

编译edumip_ros_balance之后,可以通过运行以下脚本来更改可执行文件的根权限(sudo chown root:root <文件名>)并设置其粘性位(sudo chmod u + s <文件名>):

“〜/ catkin_ws / src / edumip_balance_ros /脚本/ edumip_change_perms.sh”

如果看一下这个shell脚本,您将看到它执行以下两个命令:
sudo chown root:根〜/ catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros
须藤chmod u + s〜/ catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros

运行此脚本后(它将要求您提供sudo密码),可执行文件的权限和组将从ubuntu:ubuntu更改为root:root,并将安装其粘性位(权限以前是“-rwxrwxr-x”,后来变成了“-rwsrwxr”) -x“):
ubuntu @ arm:〜/ catkin_ws $ ls -l devel / lib / edumip_balance_ros /
总计272
-rwsrwxr-x 1根278292 2月18日18:48 edumip_balance_ros

现在,当您运行edumip_balance_ros时,它应该可以正常工作,如下所示:

ubuntu @ arm:〜$ roslaunch edumip_balance_ros edumip_balance_ros.launch
ubuntu @ arm:〜$ roslaunch edumip_balance_ros edumip_balance_ros.launch
...登录到/home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2099.log
检查日志目录中的磁盘使用情况。 这可能需要一段时间。
按Ctrl-C中断
完成检查日志文件磁盘使用情况。 用量小于1GB。

启动roslaunch服务器192.168.10.102:34253 /

总结
========

参数
* / rosdistro:动力学
* / rosversion:12.1.12

节点
/
edumip_balance_ros_node(edumip_balance_ros / edumip_balance_ros)

ROS_MASTER_URI = http://192.168.10.101:11311

进程[edumip_balance_ros_node-1]:从pid [2108]开始
[INFO] [1518981653.978399507]:文件/home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp于2018年2月3日19:38:02编译。
错误:缺少pru-rproc驱动程序
[INFO] [1518981654.104574860]:内环控制器D1:

顺序:2
时差dt:0.0100
-4.9450z²+ 8.8620z + -3.9670
-1.0000z²+ -1.4810z + 0.4812
[INFO] [1518981654.107474727]:
外环控制器D2:

顺序:2
时差dt:0.0100
0.1886z²+ -0.3721z + 0.1835
-1.0000z²+ -1.8605z + 0.8605
[INFO] [1518981654.573431369]:
保持MIP直立,开始平衡

ROS找不到我的ROS包

如果在ROS环境中不能理解catkin_ws / src中有新软件包,请尝试使用rospack profile命令更新rospack配置文件,并使用rosdep update命令更新rosdep缓存。

编译并绑定到Robotics Cape“ C”库

Robotics Cape库已预装在Ubuntu 16.04映像上,可从本页前面的链接中获得。 它是使用sudo apt-get install roboticscape命令安装的。

机械手海角库和相关头文件已安装在EduMIP上。 链接到/usr/lib/libroboticscape.so库,以及两个顶级头文件rc_usefulincludes.h和roboticscape.h。

您可以参考edumip_balance_ros项目,以了解如何在C ++ ROS节点中使用机械手披风C头文件和C链接库。

请参阅edumip_balance_ros / src / edumip_balance_ros.cpp,以了解如何使用extern“ C”指令在C ++程序中包括C头文件。

有关如何将程序链接到roboticscape C库的信息,请参见edumip_balance_ros / CMakeLists.txt。

Edumip_balance_ros软件包

  • 要编译edumip_balance_ros软件包, 还必须安装edumip_msgs软件包。
  • edumip_balance_ros软件包将不会在您的计算机上编译,仅用于在EduMIP上进行编译。

水平配置EduMIP

几个学生团队在带有脚轮的水平配置中使用了EduMIP。


为此,您将需要用自己的新代码替换“ edumip_balance_ros”项目,以控制车轮电机,以及读取和发布车轮编码器。 昨天我在教室里检查了可能的软件包之一,可以使用differential_drive ROS软件包(http://wiki.ros.org/differential_drive)。 要使用differential_drive软件包,您需要为edumip编写一个新的C ++节点,该节点(a)读取车轮编码器并按主题发布它们,并且(b)订阅车轮电机的电动机命令和电压命令的主题。







串口设备

为了与串行端口上的传感器(例如在课堂上演示的USB超声波传感器)进行交互,您将需要能够通过串行端口打开,读取和发送。




ROS串行软件包的软件包 。 您可以将其安装为“ sudo apt-get install ros-kinetic-serial”。

这里简单的例子

可以使用git clone github.com/wjwwood/serial.git命令将src的副本克隆到ROS工作区,并使用catkin_make进行编译。 examples目录包含将串行端口与串行软件包一起使用的更复杂的示例。

请注意,此名为“ serial”的ros软件包不是“ rosserial”的软件包。 “串行”包是一个轻量级的通用库,用于在串行端口上读取和发送数据。 “ Rosserial”是一个用于随节点增长而配对诸如Arduino之类的小型设备的软件包。

译者的补充:

我在文章中添加了照片和视频,以及学生作品的照片。 通常,仅此指令就足以运行,只希望至少具有最少的Linux命令行经验和对ROS体系结构的基本了解。 机器人的脚本用C编写。

您可以在评论中提出问题,我已阅读并回答。

Source: https://habr.com/ru/post/zh-CN413677/


All Articles