快速构建一个好用的ros master
一台安装有ubuntu20的小电脑
需求是安装好ros,并配置开机自动运行roscore作为rosmaster,以及启动rosbridge
0、配置ssh
- 安装ssh,方便远程控制
sudo apt install openssh-server
systemctl enable ssh
systemctl start ssh
一、安装ros
- 使用鱼香ROS脚本进行安装,超好用。选择了ROS1,并修改源。
wget http://fishros.com/install -O fishros && . fishros
- 使用roscore进行测试
roscore
- 安装
sudo apt-get install -y ros-noetic-rosbridge-server
sudo apt-get install -y ros-noetic-tf2-web-republisher
二、.bashrc修改
- 在bashrc中添加master的ip和名字
export ROS_MASTER_URI=http://192.168.31.244:11311
export ROS_IP=192.168.31.244
# export ROS_HOSTNAME=master
- 创建一个启动脚本
start_roscore.sh
#!/bin/bash# 设置要检查的IP地址
TARGET_IP="192.168.31.244"# 等待网络连接并检查目标IP
while true; do# 获取当前的IP地址CURRENT_IP=$(hostname -I | awk '{print $1}')# 检查当前IP是否是目标IPif [ "$CURRENT_IP" == "$TARGET_IP" ]; thenecho "已连接到路由器,IP地址为 $CURRENT_IP,启动 roscore..."# 启动 roscoreroscore &# 等待一定的时间让 roscore 启动(可以调整时间,例如 10秒)sleep 5# 启动 rosbridge_websocketecho "启动 rosbridge_websocket..."roslaunch rosbridge_server rosbridge_websocket.launch &sleep 5# 启动 tf2_web_republisherecho "启动 tf2_web_republisher..."rosrun tf2_web_republisher tf2_web_republisher &breakelseecho "当前IP地址是 $CURRENT_IP,等待连接到目标IP $TARGET_IP..."sleep 5fi
done
- 创建一个kill所有ros的脚本
kill_ros.sh
ps aux | grep ros | awk '{print $2}' | xargs kill -9; ps aux | grep rviz | awk '{print $2}' | xargs kill -9
- 使用crontab -e创建一个开机任务
@reboot /bin/bash -c "source /opt/ros/noetic/setup.bash && source /home/tju/.bashrc && /home/tju/start_roscore.sh" >> /home/tju/roscore_start.log 2>&1
三、设置小电脑开机自启
- 在电脑开机时进入bios,进行设置。