TurtleBot是Willow Garage设计的一款性能优良、价格低廉的机器人开发平台。其操作简单、可扩展性强,既能满足科研机构的研发需要,亦为机器人技术爱好者提供了一个强大的机器人应用开发平台。让他们直接使用TurtleBot自带的软硬件,能专注于应用程序的开 发。避免了设计草图,购买、加工材料、设计电路、编写程序、组装等一系列工作。借助该机器人平台,可以节省很多前期工作,只要根据平台的软硬件接口,就能开发出所需的功能。
提到TurtleBot,就必不可少要说到构建于其上的ROS系统。
ROS即Route Operation System,译为"软件路由器",是一款机器人操作系统,其作为机器人软件平台,能为异质计算机集群提供类似操作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。到2008年,主要由威楼加拉吉继续该项目的研发。
ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)目前ROS主要支持Ubuntu操作系统。基于此,博主在qualcomm的Dragonboard410c debain系统上构建了基于ROS系统的turtlebot项目,大家可以到博主的《基于qualcomm平台的kincet应用系列一之Turtlebot(自动跟随机器人)上篇》查看具体的实现方式。
另外博主也介绍了如何实现Turtlebot自动跟随功能以及如何让turtlebot开机后自行启动运行!但是这两天有不少童鞋私信博主上篇介绍的关于实现Turtlebot开机后自启动的实现方式调试不方便,尤其是修改开机自启动脚本(/etc/rc.local)很容易因为编程时的疏忽造成系统进入死机状态。鉴于此种情景,博主对原来的方式进行了优化,今天再给大家分享一套实现Turtlebot开机自启动实现方式的“干货”。
一.准备工具:
图1 turtlebot
图2 鼠标与键盘
图3显示器
二.实现原理:
在linux系统中,/etc/rc.loacal开机启动脚本是运行在用户登陆脚本之前,所以有些童鞋在调试的时候如果因为失误造成阻塞,系统将无法进入到用户界面,从而无法实现人机命令行交互模式,也就是大家所谓的死机现象。
在这里,我们将ROS的开机启动功能放到用户的登陆后的运行脚本(~/.bashrc)里,这样可以保证大家在编程失误的时候不至于因为阻塞而造成系统死机。
三.实操手册:
1.添加开机运行脚本auto_runing.sh:
sudo vim ~/auto_runing.sh
source /opt/ros/kinetic/setup.bash
source /home/linaro/.bashrc
roslaunch turtlebot_bringup minimal.launch &
sleep 30s
roslaunch turtlebot_follower follower.launch &
2.将开机运行脚本添加到用户自启动脚本中
sudo vim ~/.bashrc
在.bashrc尾行添加
cd /home/linaro
./auto_runing.sh
3.实现系统开机自动登陆功能:
sudo apt-get install lightdm
sudo
vim /etc/lightdm/lightdm.conf
#autologin-user=
改为
autologin-user=用户名
这里我们是autologin-user=linaro
修改完毕,保存退出。
4.sudo
reboot
重启后等待一到两分钟,Turtlebot将会自行启动自动跟随功能。
|