ubuntu系统使用SSH远程连接ROS小车并使用远程的Rviz

一.SSH简介

SSH是一种网络协议,用于计算机之间的加密通讯,即我们可以在一台计算机上通过SSH协议登陆另一台计算机,并对其进行操作。作者在这里使用的是SSH在Ubuntu中的免费开源实现,通过SSH协议访问ROS小车,并实现远程的Rviz。

说明:在帖子中只有SSH的账号密码登陆。

(以下是比较官方的说法)Secure Shell(缩写为 SSH),由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为一项创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境。最初的 SSH 协议是由芬兰的一家公司的研究员 Tatu Ylönen 于 1995 年设计开发的,但是因为受版权和加密算法等等的限制,现在很多人都转而使用 OpenSSH。OpenSSH 是 SSH的替代软件包,而且是开放源代码和免费的。 

二.准备工作

1)服务端与客户端

在通过SSH访问ROS小车系统前,我们需要搞清楚服务端与客户端的概念。

服务端:ROS小车

客户端:我们的ubuntu电脑

(以下为一些定义,赶时间请跳过)

服务端指提供服务的一端。它会等待客户端的访问,并为其提供服务。服务端一般是 sshd 进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。

客户端指面向用户的一端。它会向服务端发出连接请求,服务端响应请求,两者建立连接。

2)ip地址

在进行SSH连接前,我们需要知道服务端与客户端的ip地址。通过以下命令进行查看。

ifconfig

例如,我的ROS小车(服务端)ip地址为192.168.43.198,ubuntu电脑(客户端)ip地址为192.168.43.114。

三.安装SSH

1)服务端安装

需要在ROS小车安装服务端

sudo apt-get install openssh-server

2)客户端安装

一般Ubuntu系统默认自动安装有SSH客户端,因此大家根据需求在自己的ubuntu安装客户端。

sudo apt-get install openssh-client

3)检查是否安装完成

dpkg -l | grep ssh

  

4)其他SSH指令

启动ssh服务:sudo /etc/init.d/ssh start 
关闭ssh服务:sudo /etc/init.d/ssh stop
重启ssh服务:sudo /etc/init.d/ssh restart

四.SSH连接(帐号密码)

ssh 服务端id@服务端ip地址

例如:我的小车id为nano,ip地址为192.168.43.198,那么我的命令为:

ssh nano@192.168.43.198

  

 SSH默认端口号为22,如果需要更改,请按照以下操作:

(1)服务端更改端口号

gedit /etc/ssh/sshd_config
修改15行 #Port 22 值为端口号,然后重启SSH
sudo /etc/init.d/ssh restart

(2)客户端运行指令

ssh -p 端口号 服务端id@服务端ip地址

问题:

连接报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:6zKiuPSPE90dB6PNCj1fICgA1DTrTxPFiVbl82+sS0E.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:4
RSA host key for  has changed and you have requested strict checking.
Host key verification failed.

解决办法:运行指令打开know_hosts文件,并清空know_hosts中的数据

sudo gedit /home/.ssh/knows_hosts

报错原因: 服务器的公钥(public key)发生了变化(比如重装了系统或重装了openssh服务),而客户端存储的信息没有发生变化。

五.SSH运行导航并远程使用Rviz

注意:首先要确保自己的ubuntu电脑有ROS,并可以正常启动

(1)修改服务端.bashrc文件(ROS小车)

gedit ~/.bashrc

在后面加上

export ROS_HOSTNAME=服务端ip
export ROS_MASTER_URI=http://服务端ip:11311

(2)修改客户端.bashrc文件(自己的ubuntu电脑)

gedit ~/.bashrc

在后面加上 

export ROS_HOSTNAME=客户端ip
export ROS_MASTER_URI=http://服务端ip:11311

例如我的电脑是这样 :

 

(3)运行导航

注意:导航中不能自动开启rviz节点

客户端(自己的ubuntu电脑)通过SSH远程连接服务端(ROS小车),并启动导航相关的节点。

(4)开启Rviz

客户端(自己的ubuntu电脑)直接开启Rviz,注意不是在连接SSH后开启Rviz,导入导航的rviz文件,选择各部分订阅话题即可。

  • 10
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是一个简单的例子,可以通过键盘控制ROS小车移动: ```python #!/usr/bin/env python # coding=utf-8 import rospy from geometry_msgs.msg import Twist # 初始化ROS节点 rospy.init_node('keyboard_control') # 创建一个Twist的publisher pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10) # 创建一个Twist消息 move_cmd = Twist() # 定义线速度和角速度的初始值 move_cmd.linear.x = 0.0 move_cmd.angular.z = 0.0 # 定义线速度和角速度的增量 linear_step = 0.1 angular_step = 0.1 # 定义键盘控制函数 def keyboard_control(): # 获取键盘输入 key = raw_input("Control the robot (w: forward, s: backward, a: left, d: right, q: quit): ") # 根据键盘输入设置线速度和角速度 if key == 'w': move_cmd.linear.x += linear_step elif key == 's': move_cmd.linear.x -= linear_step elif key == 'a': move_cmd.angular.z += angular_step elif key == 'd': move_cmd.angular.z -= angular_step elif key == 'q': return True # 发布Twist消息 pub.publish(move_cmd) # 打印当前的线速度和角速度 rospy.loginfo("Current linear velocity: %f, Current angular velocity: %f", move_cmd.linear.x, move_cmd.angular.z) # 循环执行键盘控制函数 while not rospy.is_shutdown(): if keyboard_control(): break ``` 在这个例子中,我们通过键盘输入控制小车的运动。通过按下w键,可以使小车向前移动,按下s键可以使小车向后移动,按下a键可以使小车向左转弯,按下d键可以使小车向右转弯,按下q键可以退出程序。在键盘控制函数中,我们根据键盘输入设置线速度和角速度,并发布Twist消息。在循环中不断执行键盘控制函数,直到用户按下q键退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

See Tom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值