树莓派5的ROS环境和transbot se的硬件控制案例都是位于Docker内,我们每次运行案例需要确认是在transbot se 的docker容器里。
自己启动docker是运行单个案例或者个人开发需要操作的
注意:运行单个案例必须关闭开机大程序!
关闭开机大程序教程可以参考【Transbot SE扩展板控制教程:关闭开机自启动大程序】教程操作。
xxxxxxxxxx
【开发前准备:关闭开机大程序】:教程内提供了临时/永久关闭开机大程序以及关闭/恢复开机自启动Docker脚本操作!
对于初次使用,建议临时关闭开机大程序,对于简单开发者,可以尝试永久关闭开机大程序。
xxxxxxxxxx
永久关闭开机大程序复原失败,可以按照教程的操作反向复原或者自己烧录系统恢复出厂状态
我们在树莓派5主板上的home目录下提供了运行transbot se对应docker镜像的脚本文件run_docker.sh
x#!/bin/bash
# Wait for the Docker service to start
while true; do
if systemctl is-active --quiet docker; then
echo "Docker service has been started"
break
else
echo "The Docker service has not started, waiting..."
sleep 1
fi
done
xhost +
docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--security-opt apparmor:unconfined \
-v /home/pi/temp:/root/temp \
--device=/dev/ttyAMA0 \
--device=/dev/video0 \
--device=/dev/input \
--device=/dev/video1 \
yahboomtechnology/ros-melodic:Transbot_Se_V1 /bin/bash
启动命令
xxxxxxxxxx
./run_docker.sh
如果没有正确连接硬件设备,启动docker可能会失败!
未连接摄像头或者识别的不是/dev/video0,Docker可能就无法正确进入或者摄像头案例报错。
如果需要取消USB摄像头的硬件映射,我们可以删除启动脚本内的对应的--device=/dev/video0 \
信息。
xxxxxxxxxx
#!/bin/bash
# Wait for the Docker service to start
while true; do
if systemctl is-active --quiet docker; then
echo "Docker service has been started"
break
else
echo "The Docker service has not started, waiting..."
sleep 1
fi
done
xhost +
docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--security-opt apparmor:unconfined \
-v /home/pi/temp:/root/temp \
--device=/dev/ttyAMA0 \
--device=/dev/input \
--device=/dev/video1 \
yahboomtechnology/ros-melodic:Transbot_Se_V1 /bin/bash