实验二 ROS控制底盘运动 ​【实验目标】 ​通过roslaunch指令启动小车底盘,了解如何通过ROS启动TOM车底盘对可视化工具Rviz进行简单的配置操作,体验底盘的运行效果通过话题消息,学习ROS是如何控制TOM车运动的通过teleop节点,学习如何用键盘按键控制底盘运动【实验内容】 ​SSH远程连接小车 ​为了方便远程控制小车,我们在电脑端用SSH连接小车上位机端,这样只需要在笔记本电脑上操作,就可以直接控制小车

1、查看个人PC端和小车端的IP地址 同时按下键盘组合键Ctrl + Alt + T启动终端,或直接点击Terminal终端图标

(个人PC端) 打开终端输入:ifconfig,记住这个地址

(小车端)可以外接显示器、键盘,按同样方法查看小车IP,如果是TOM车升级版套餐,我们会附赠键鼠显一体设备,可直接用双Type-C线连接,长按开机键打开屏幕

2、主从机配置

查看两机地址后,将IP地址写入.bashrc文件中:gedit ~/.bashrc

上面写主机(小车端)地址,下面写从机(个人PC端)地址

修改完保存后source一下:source ~/.bashrc

3、SSH连接ssh tianbot@192.168.0.29输入密码‘ROS’按回车,进入小车终端,会发现@后面的计算机名变成了tianbot,说明当前终端已经进入了tianbot端

注意!!!

个人PC端为:tianbot@ros2go 小车端为:tianbot@tianbot

每次新打开终端,如果要进入小车端都要先SSH连接 启动rviz、rqt等图形化界面,建议在个人PC端启动,也就是在计算机名为ros2go的终端

底盘全部启动 ​打开小车电源和上位机电源,并确保上位机端和个人PC端连接在同一局域网下 1、打开终端2、SSH远程连接小车

shellssh tianbot@192.168.0.293、启动底盘 在终端为tianbot@tianbot的小车端输入命令:

shellroslaunch tianbot_bringup tianbot_bringup.launch4、查看话题消息 打开新终端,此时端口是个人PC端,输入命令:

shellrostopic list发现有一堆信息,这就是底盘启动的话题 5、发布速度话题消息 我们发布一个速度话题消息,来控制底盘运动,继续在PC端输入(后面用Tab补全):

shellrostopic echo -r 10 /cmd_vel geometry_msgs/Twist "linear:

x: 0.2

y: 0.0

z: 0.0

angular:

x: 0.0

y: 0.0

z: 0.5"按下回车,会发现小车在转圈,说明ROS就是通过这个话题与智能车进行通信,从而控制小车运动的

底盘单独启动 ​单独启动需要在tianbot端口启动

Tianbot 底盘 ​shellroslaunch tianbot_core tianbot_core.launch激光雷达 ​shellroslaunch tianbot_bringup lidar.launch

roslaunch tianbot_rviz view_lidar.launch深度相机 (if applicable) ​shellroslaunch tianbot_bringup rgbd_camera.launchUSB摄像头 ​shellroslaunch tianbot_bringup usb_cam.launchGPS (if applicable) ​shellroslaunch tianbot_bringup gps.launch键盘控制 ​shellroslaunch tianbot_bringup tianbot_bringup.launch

rosrun teleop_twist_keyboard teleop_twist_keyboard.py按照输出框提示,按键控制小车运动

写一个简单的Python程序,控制小车画圆 ​我们选择VS Code进行程序的编写

在tianbot_bringup功能包下新建文件夹scripts,用来存放python文件,新建draw_circle.py文件,将下列源码复制粘贴进去,最好自己敲一遍。python#!/usr/bin/env python

import rospy

from std_msgs.msg import String

from geometry_msgs.msg import Twist

def talker():

pub = rospy.Publisher('cmd_vel', Twist, queue_size=10)

rospy.init_node('draw_circle', anonymous=True)

rate = rospy.Rate(10)

vel_cmd = Twist()

vel_cmd.linear.x = 0.2

vel_cmd.linear.y = 0

vel_cmd.linear.z = 0

vel_cmd.angular.x = 0

vel_cmd.angular.y = 0

vel_cmd.angular.z = 0.5

pub.publish(vel_cmd)

while not rospy.is_shutdown():

str = "run time %s" % rospy.get_time()

rospy.loginfo(str)

pub.publish(str)

rate.sleep()

if __name__ == '__main__':

try:

talker()

except rospy.ROSInterruptException:

pass保存退出,设置文件为可执行权限,右键属性-->权限-->允许作为程序执行文件 运行 启动小车底盘,运行刚写好的程序:rosrun tianbot_bringup draw_circle.py 小车就会开始做画圆运动!