ROS自启

一、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

重启即可实现开机自启动  

 


你可能感兴趣的:(ROS自启)