IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS移植机器人小车:小车主机与从机电脑的通信 -> 正文阅读

[人工智能]ROS移植机器人小车:小车主机与从机电脑的通信

这个主要涉及.bashrc文件及以下三个参数,

$ROS_MASTER_URI
$ROS_HOSTNAME
$ROS_IP

其中ROS_IP和ROS_HOSTNAME有什么不同呢?

ROS_IP/ROS_HOSTNAME
ROS_IP和ROS_HOSTNAME是可选的环境变量,用来设置ROS节点或工具的公开网地址。这两个选项是互斥的,如果两者都设置优先使用ROS_HOSTNAME。如果你指定一个IP地址,使用ROS_IP;如果制定一个主机名(a host name),使用ROS_HOSTNAME。当一个ROS成员报告URI给master或者其他成员,这个值就会被用到。这个设置只用在一台计算机有多个地址,需要强制ROS到特定的一个的情况。
除了’localhost’(本地主机),ROS成员绑定到所有可用的网络接口,他不影响实际绑定地址。如果这个值设定为本地主机,ROS成员只绑定在环回接口。这将会阻止远程成员与本地成员交流。

另外,我们要先选定哪个是主机,哪个是从机。一般,购买的小车,主控端是指树莓派与工控机,也就是ROS主机;远程端是指虚拟机或者你自己安装好ROS系统并且配置好ROS网络的的远程ROS从机;一般用户密码RikiRobot小车主控端与远程端的用户密码都是“123456”;我自己安装的系统要根据实际情况设置。

下面我从自己的实际配置介绍一下,

主机(树莓派):
IPv4地址:192.168.3.93
子网掩码:255.255.255.0
网关:192.168.3.1
从机(远程电脑):
IPv4地址:192.168.3.92(前三个数字在同一段,末尾数字不一样)
子网掩码:255.255.255.0
网关:192.168.3.1

检查连接

无论是从机还是主机,你都应该可以ping通下面的三个端口,

ping 192.168.3.1
ping 192.168.3.92
ping 192.168.3.93

ROS配置

修改bashrc
将下列两句加入到分别入到两个设备的.bashrc的最后一行
ROS_MASTER_UR=http://主机ip:11311
ROS_IP=自己ip

主机:
export ROS_MASTER_URI=http://192.168.3.93:11311
export ROS_IP=192.168.3.93

从机:
export ROS_MASTER_URI=http://192.168.3.93:11311
export ROS_IP=192.168.3.92

检查通信

主机和从机都要运行source ~/.bashrc之后,主机运行

roscore

从机运行

rostopic list

出现

/rosout
/rosout_agg

说明通信成功

关于报错:invalid ROS_IP (port should not be included)

有的教学中,设置的ROS_IP是不固定的(因为卖家并不知道买家的IP),所以会使用`hostname -I`这样的标识,在运行下面的指令时

roslaunch? rikirobot bringup.launch(我自己安装的系统)
或者

roslaunch clbrobot bringup.launch(卖家的系统)

有可能会报错,

invalid ROS_IP (port should not be included)

修改

export ROS_IP=`hostname -I`

export ROS_IP=`hostname -I | cut -d " " -f 1`

或者,

export ROS_IP=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`

注意:采用上面那个对应任意连接方式,但下面那个必须是使用wlan0无线WIFI。

修改后的主机和从机配置为,

主机(树莓派小车):
# export ROS_MASTER_URI=http://192.168.3.93:11311
# export ROS_IP=`hostname -I | cut -d " " -f 1`
export ROS_IP=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`
export ROS_HOSTNAME=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`
export ROS_MASTER_URI=http://`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`:11311
# 2wd,4wd,mecanum,omni.omni4wd,tank,ackermann
export RIKIBASE=mecanum
export RIKILIDAR=rplidar
export USB_CAMERA=true
export CLB_SERIAL="AEEFGABES63K6M2JXWMTA4VUBU======"

从机(我的远程ubuntu电脑没有wifi,只有一根网线连接到路由器):
export ROS_MASTER_URI=http://192.168.3.93:11311
export ROS_IP=`hostname -I | cut -d " " -f 1`

最后,配置完了不要忘记

source? ~/.bashrc

恢复单机使用ROS

要在各自设备上运行roscore,就要关闭两机通信,可注释调上面这两个设置。

本文结束

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:47:25  更:2022-03-13 21:50:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 15:35:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码