树莓派 ROS功能包 开机自启动

第一次写,随便写写。

最近想要在树莓派开机时自动运行一个ROS功能包,结合了网上的办法,踩了一些坑,然后修改了一番完成了。

由于robot_upstart、gnome-session-properties、init.d等方法我都因为各种原因不能实现,
所以最终我使用了在rc.local 写运行脚本的方式实现。

一、创建一个xxx.sh文件

文件内容如下:

#!/bin/sh
#chkconfig: 2345 80 90
#description:ros_start.sh

export ROS_HOSTNAME=“你的地址,一般是127.0.1.1”
export ROS_MASTER_URI=http://“主机地址”:11311

. /opt/ros/melodic/setup.sh
. ~/catkin_ws/devel/setup.sh


date >> ~/start_log.txt
echo ":ros running" >> ~/start_log.txt
nohup  roslaunch 功能包名称 xxx.launch & >> ~/start_log.txt
sleep 30

date >> ~/start_log.txt
echo ":nav_patrol running" >> ~/start_log.txt
nohup  roslaunch 功能包名称 xxx.launch & >> ~/start_log.txt
sleep 30

date >> ~/start_log.txt
echo ":nav_patrol running" >> ~/start_log.txt
nohup  roslaunch 功能包名称 xxx.launch & >> ~/start_log.txt
sleep 30

上面为什么要这样写呢,我要解释一下
首先我是参考了其他人的方法的,这是参考网址
链接: https://zhuanlan.zhihu.com/p/56551712.

他这里我修改了两个点。
  第一个是他是用修改~/.bashrc的方式实现的开机启动roslaunch,我发现这种只有在连接屏幕或者vnc连接桌面的时候才能开始运行。
  第二个是通过查看日志文件,roslaunch程序跑了一下就突然停了,然后我就随便改改,将运行程序跑一遍变成跑3遍,并且每一遍相隔30s,我发现可以了。。后来我想了想,应该是跑了roslaunch被其他进程之类的阻塞了,又或者是wifi还未连接成功我就运行了,因为我的主机是在其他设备上跑的,可能他突然无法识别到roscore启动了然后就停止了。所以我需要吧启动时间延长一点,等到其他条件准备完毕才行。
  好吧,以上都是我猜的。

二、修改xxx.sh文件权限

使用sudo chmod +x xxx.sh命令使得改脚本可执行

三、修改/etc/rc.local文件

在最末尾exit 0前面插入下列
su user -c “exec ~/xxx.sh”
其中user是你的用户名,~/xxx.sh是脚本文件位置。

三、开机测试

sudo reboot

备注:

(1) nohup
加在一个命令的最前面,表示不挂断的运行命令

(2) &
加载一个命令的最后面,表示这个命令放在后台执行

树莓派中设置ROS 2程序开机自启动,可以通过以下步骤来完成: 1. 创建一个启动脚本 在树莓派中,可以使用/etc/init.d/目录下的脚本来进行开机自启动。因此,可以创建一个启动脚本,将ROS 2程序加入到其中,以便在开机时自动运行。 创建一个启动脚本,例如:/etc/init.d/ros2_startup.sh,并将以下内容添加到脚本中: ``` #!/bin/bash ### BEGIN INIT INFO # Provides: ros2_startup # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: ROS 2 Startup Script # Description: This script starts ROS 2 on boot. ### END INIT INFO # Set the path to the ROS 2 installation ROS2_INSTALL_PATH=/opt/ros/dashing # Set the path to the workspace containing your ROS 2 package WORKSPACE_PATH=/home/pi/ros2_ws # Source the ROS 2 setup script source $ROS2_INSTALL_PATH/setup.bash # Build the workspace cd $WORKSPACE_PATH && colcon build --symlink-install # Run the ROS 2 program ros2 run my_package my_node ``` 修改ROS2_INSTALL_PATH和WORKSPACE_PATH为你的实际路径,并将ros2 run my_package my_node替换为你要运行的ROS 2程序命令。最后,保存并关闭文件。 2. 使脚本可执行 使用以下命令将脚本设置为可执行: ``` sudo chmod +x /etc/init.d/ros2_startup.sh ``` 3. 添加启动脚本到启动项 使用以下命令将启动脚本添加到启动项中: ``` sudo update-rc.d ros2_startup.sh defaults ``` 现在,当树莓派启动时,ROS 2程序将自动运行。 注意:如果你需要停止ROS 2程序,请使用以下命令进行停止: ``` sudo systemctl stop ros2_startup ``` 如果你需要重新启动ROS 2程序,请使用以下命令: ``` sudo systemctl restart ros2_startup ``` 如果你需要从启动项中删除ROS 2程序,请使用以下命令: ``` sudo update-rc.d -f ros2_startup.sh remove ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值