参考链接教程 如何在RDK X3上配置TROS/ROS2功能包的开机自启动?
编写了自启动脚本与服务
发现上电自启动服务的运行效果与开机后单独运行脚本的效果有较大的差别,并且开机后第一次运行脚本也同样有和上电自启动服务同样的问题:精度不足;使用htop查看性能占用几乎100%(正常单独运行脚本大概70%)
如何提升自启动服务的响应速度(从上电到运行耗费两分钟左右)?以及如何避免自启动服务运行效果的精度不足与内存开销异常?
脚本内容如下:
#!/bin/bash
timestamp=$(date +“%m-%d-%H-%M”)
source /opt/ros/humble/setup.bash
source /home/wheeltec/wheeltec_ros2/install/setup.bash
source /home/wheeltec/wheeltec_tros/install/setup.bash
source /home/wheeltec/ros2_ws/install/setup.bash
export CAM_TYPE=usb
export ROS_DOMAIN_ID=0
ros2 launch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch.py >> “/home/wheeltec/logs/ros_launch_$timestamp.log” 2>&1 &
ros2 launch dnn_node_example dnn_node_example.launch.py \
dnn_example_config_file:=/home/wheeltec/config/my_yolov5xworkconfig.json \
dnn_example_image_width:=640 \
dnn_example_image_height:=480 \
“/home/wheeltec/logs/dnn_node_$timestamp.log” 2>&1 &
ros2 run object_detection ai_subscriber_kalman >> “/home/wheeltec/logs/ai_subscriber_kalman_$timestamp.log” 2>&1 &
ros2 run web_video_server web_video_server >> “/home/wheeltec/logs/web_video_server_$timestamp.log” 2>&1 &
/usr/bin/python3 /home/wheeltec/wheeltec_ros2/src/nav/localization_obstacle_detection_node.py >> “/home/wheeltec/logs/nav_localization_$timestamp.log” 2>&1 &
/usr/bin/python3 /home/wheeltec/wheeltec_ros2/src/nav/enav2.py >> “/home/wheeltec/logs/nav_enav2_$timestamp.log” 2>&1 &
/usr/bin/python3 /home/wheeltec/wheeltec_ros2/src/nav/goal_pose.py >> “/home/wheeltec/logs/nav_goal_pose_$timestamp.log” 2>&1 &
/usr/bin/python3 /home/wheeltec/wheeltec_ros2/src/nav/centerline_detection.py >> “/home/wheeltec/logs/nav_centerline_$timestamp.log” 2>&1 &
wait
服务内容如下:
[Unit]
Description=Wheeltec Robot Startup Script
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/bash /home/wheeltec/startup_scripts/startup.bash
Restart=always
RestartSec=5
StandardOutput=append:/home/wheeltec/logs/startup_stdout.log
StandardError=append:/home/wheeltec/logs/startup_stderr.log
[Install]
WantedBy=multi-user.target