RDK X5自启动响应速度慢,运行精度不稳定,不如单独运行脚本的效果

参考链接教程 如何在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

1.您的服务配置中After=network.target 仅保证网络就绪,但 摄像头、模型文件等外设 / 资源可能未完全初始化 。建议在脚本开头添加sleep ,确保 USB 摄像头等设备完成初始化.
2.可以尝试优化 ROS2 节点启动方式, 将多个独立的ros2 run /ros2 launch 节点 合并为 Composition Node。 并且调整 ROS2 QoS 设置
3. 裁剪不必要的系统服务, 关闭不需要的服务,减少开机时的资源竞争。

1 个赞