Ubuntu18.04 Turtlebot2机器人移动控制 Rviz Gazebo仿真实现

1 篇文章 0 订阅
1 篇文章 0 订阅

Ubuntu18.04 ROS-Melodic Turtlebot2

操作系统为ubuntu18.04 安装ROS Melodic Turtlebot2,很多大佬分享了详细的安装过程,在这里就不多赘述,安装遇到问题多百度,大部分都是可以解决的。

Turtlebot2移动控制

前期学习了赵虚左老师的ROS入门课程,结合Turtlebot2资料这里方便大家打开,放的创客制造的文档,也推荐大家去看官方文档

首先创建一个工作空间,然后切换到工作空间进行编译

mkdir -p rosdemo_ws/src
cd rosdemo_ws/
catkin_make

方法一 终端运行

机器人底盘连接到电脑,关闭turtlebot所有终端窗口,打开一个新的中断,听到提示音后,机器人底盘成功连接

roslaunch turtlebot_bringup minimal.launch

在工作空间下,下载源代码

sudo git clone https://github.com/markwsilliman/turtlebot/

切换目录

cd turtlebot

运行测试脚本,这里有两个都可以作为测试脚本,goforward.py 或者 draw_a_square.py

python goforward.py

能够看到机器人向前移动,按下Ctrl + c,停止运行

接着打开脚本

sudo gedit goforward.py

可以对速度等参数进行修改,比如如下

# let's go forward at 0 m/s
move_cmd.linear.x = 0
# let's turn at 0.5 radians/s
move_cmd.angular.z = 0.5

保存退出,重新运行程序,可以看到更改后的效果

运行另一个测试的脚本,你会看到Turtlebot2在地板上画正方形

python draw_a_square.py

至此,完成Turtlebot2的测试,但是为了更加方便我们开发,个人觉得用gedit打开代码不是很舒服,所以第二种方法我们安装配置VScode,这里VScode安装以及配置方法可以参考VScode配置

方法二 VScode运行实现精确控制

在之前的测试中,只能用Ctrl + c停止运行,可以实现更加精确的控制吗?比如我想前进1米,在转弯30度,在前进2米,最好我可以通过终端传入参数来控制移动距离或者传入角度

这里参考了上述历程中的想法,比如设置机器人的移动速度为 0.2m/s 运行 5s 的时间就能够实现移动1m的控制目标

代码如下所示,添加对输入参数个数进行检测

#import
import sys

#main
if __name__ == '__main__':
	
	#judge the number of  param
	if len(sys.argv) != 3:
		rospy.logerr("Input error")
		sys.exit(1)

	# ros  running
	try:
		DrawASquare()
	except:
		rospy.loginfo("node terminated.")

接着对DrawASquare()函数根据自己的需求进行更改,这里展示部分,简单实现了所需功能

while not rospy.is_shutdown():
	if(str(sys.argv[1]) == 'line'):
		#if go forward 0.2 m (1 seconds * 0.2 m / seconds)
		rospy.loginfo("Going Straight")
		for x in range(0,int(float(sys.argv[2])*5*5)):
			self.cmd_vel.publish(move_cmd)
			r.sleep()
	count = count + 1
	if(count == 1): 
		sys.exit(1)

这里移动的距离通过for循环中的参数进行设置,完成了脚本的编写之后,编译没问题之后进行仿真设计。

Rviz Gazebo仿真实现

1.首先为地图创建一个文件夹

mkdir ~/turtlebot_custom_maps

2.推出Gazebo的世界

roslaunch turtlebot_gazebo turtlebot_world.launch

3.启动地图建设

roslaunch turtlebot_gazebo gmapping_demo.launch

4.使用rviz的地图构建过程可视化

roslaunch turtlebot_rviz_launchers view_navigation.launch

这里上边给出的是官方的文件,但是在我的路径中没有找到,最后发现在我的文件中,命名为 view_robot.launch,更改为如下指令

roslaunch kobuki_rviz_launchers view_robot.launch

到此就成功打开了Gazebo 和 Rviz

Rviz仿真图

问题汇总:

在仿真运行过程中可能会遇到的问题
1.RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name

原因:没有添加环境变量

解决方法:
回去再次编译,添加环境变量(建议报类似错误时候 source一下,可能有意想不到的效果哈哈)

catkin_make
source ./devel/setup.bash

2.Rviz 启动后 No transform from [base_link] to [map]
robotmodel下的Status状态是红色的,而且右侧显示的机械臂上附近有不明的大片的白色

原因:缺少unicode

解决方法
安装 unicode 关闭终端,重新启动 Rviz

sudo apt-get install unicode

结合仿真与机器人控制

我们在仿真中,运行之前写的精确控制机器人移动的脚本,直观进行展示

cd到python脚本的工作空间,编译成功后,代码如上,输入第一个参数为走直线的指令(line),第二个参数为移动距离(1m)

rosrun test01_hello draw_a_square.py line 1

终端图

Rviz中看到机器人移动距离大约为1m(大约一个格子的距离)

机器人移动图

当然你也可以控制机器人旋转固定的角度,输入第一个参数为旋转的指令(rotate),第二个参数为旋转角度(90)

rosrun test01_hello draw_a_square.py rotate 90
rosrun test01_hello draw_a_square.py line 1

机器人旋转图

不仅可以在Rviz中看到机器人移动,也可以在Gazebo中看到机器人移动画面,这里不做展示。

还可以通过键盘控制机器人的移动

roslaunch turtlebot_teleop keyboard_teleop.launch

小结

本篇主要记录自己在做毕设过程中的一些过程与经验,部分地方的内容不是很详细,但是已附上参考链接,希望给到大家帮助,遇到问题可以多百度一下,很多大佬都给出了详细的解决方案,祝您科研顺利

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值