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
问题汇总:
在仿真运行过程中可能会遇到的问题
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文章来源:https://www.toymoban.com/news/detail-424187.html
小结
本篇主要记录自己在做毕设过程中的一些过程与经验,部分地方的内容不是很详细,但是已附上参考链接,希望给到大家帮助,遇到问题可以多百度一下,很多大佬都给出了详细的解决方案,祝您科研顺利文章来源地址https://www.toymoban.com/news/detail-424187.html
到了这里,关于Ubuntu18.04 Turtlebot2机器人移动控制 Rviz Gazebo仿真实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!