一、Ubuntu微型自启roscore
准备一个脚本 名字为autoLoad.sh,
[python] view plain copy
1. #! /bin/bash
2. source /opt/ros/indigo/setup.bash
3. roscore
打开终端,在终端中执行gnome-session-properties,会弹出一个“启动应用程序首选项”的菜单 点击添加
9999
名称 注释随便输入
sh文件的权限,必须是可运行的, 路径为绝对路径。
sudo chmod +x your_command.sh
命令的地方输入
gnome-terminal -x /home/jobs/mecAGV/autoLoad.sh
红色的为路径
如果想要后台运行
则换成
bash /home/jobs/mecAGV/autoLoad.sh
我做时自启遇到一点问题,roscore可以自启,但连接地盘失败,要先给串口赋永久权限。
二、连接底盘
方法一,从master上直接设置roslaunch自启。
方法二,从host上用ssh控制实现,但遇到FAILED,(就是防火墙问题) sudo ufw disable(关闭防火墙),方法二成功。
SSH用起来比较麻烦,推荐使用ROS内部通信,直接roscore过后就能从host输入指令控制master
修改:
export ROS_MASTER_URI=http://……:11311
export ROS_HOSTNAME=……
#export ROS_MASTER_URI=http://localhost:11311
#export ROS_HOSTNAME=localhost
export TURTLEBOT_BASE=create
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=asus_xtion_pro
export TURTLEBOT_SIMULATION=false
export TURTLEBOT_SERIAL_PORT=/dev/ttyUSB0
export ROS_IP=192.168.1.16
途中遇到can’t open port /dev/ttyUSB0问题
为了在普通用户也能正常使用USB转串口设备, 可以通过增加udev规则来实现。步骤如下:
创建文件/etc/udev/rules.d/70-ttyusb.rules
在文件内增加一行
KERNEL=="ttyUSB[0-9]*", MODE="0666"
重新插入USB转串口设备,普通用户就有权限访问了。
三、使用upstart的自启动方法自启launch文件
step1
安装upstart
sudo apt-get install ros-indigo-robot-upstart
step2
把要启动的节点都放在startall.launch文件内(直接用原有launch文件即可)
运行rosrun robot_upstart install + startall.launch(带路径)
startall.launch所在的位置为
home/tt/catkin_ws/src/start/launch
rosrun robot_upstart install --interface eth0 --master http://192.168.10.203:11311 start/launch(相对路径)/startall.launch
$rosrun robot_upstart install X_bringup/launch/minimal.launch
其中install后面的参数介绍:
其中192.168.10.203是机器人底盘IP
install后面可以有下面一些参数:
usage: install [-h] [--job JOB] [--interface ethN] [--user NAME]
[--setup path/to/setup.bash] [--rosdistro DISTRO]
[--master http://MASTER:11311] [--logdir path/to/logs]
[--augment]
pkg/path [pkg/path ...]
必须的参数
pkgpath Package and path to install job launch files from要启动的launnch文件的package和其路径
可选参数
--job Specify job name. If unspecified, will be constructed from package name.
--interface Specify network interface name to associate job with.指定与操作有关网络的interface名字,可以在terminal中用ifconfig查看
--user Specify user to launch job as.
--setup Specify workspace setup file for the job launch context.
--rosdistro Specify ROS distro this is for.
--master Specify an>
--logdir Specify an a value for ROS_LOG_DIR in the job launch context.
--augment=False Bypass creating the job, and only copy user files. Assumes the job was previously created.
step3
启动、停止、卸载服务
sudo service tt start
其中tt为我们机器人所用的ubuntu系统的名字。
停止服务
sudo service tt stop
卸载
rosrun robot_upstart uninstall tt
step4
重启即可实现开机自启动