The meta layer is designed for those guys who want to use i.MX8M series SOC and Yocto system to develop AGV and Robot.
The platform includes some key components:
1, ROS1 (kinetic, melodic) and ROS2(dashing, eloquent, foxy)
2, Real-time Linux solution : Xenomai 3.1 with ipipe 5.4.47 patch
3, Industrial protocol : libmodbus, linuxptp, ros-canopen, EtherCAT(TBD)
4, Security: Enhanced OpenSSL, Enhanced GmSSL, Enhanced eCryptfs, secure key store, secure boot(TBD), SE-Linux(TBD), Dm-verity(TBD)
The first release bases on i.MX Yocto release L5.4.47 2.2.0 and You need download Linux 5.4.47_2.2.0 according to https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdf firstly. And then you can follow the below guide to build and test ROS and Xenomai.
A, clone meta-robot-platform from gitee.com
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v0.1-L5.4.47-2.2.0
B, Adding the meta-robot-platform layer to your build
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
C, How to build Robot image (example for i.MX8MQ EVK board)
$ DISTRO=imx-robot-xwayland MACHINE=imx8mqevk source setup-imx-robot.sh -r kinetic -b imx8mqevk-robot-kinetic
[or DISTRO=imx-robot-xwayland MACHINE=imx8mqevk source setup-imx-robot.sh -r melodic -b imx8mqevk-robot-melodic ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mqevk source setup-imx-robot.sh -r dashing -b imx8mqevk-robot-dashing ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mqevk source setup-imx-robot.sh -r eloquent -b imx8mqevk-robot-eloquent ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mqevk source setup-imx-robot.sh -r foxy -b imx8mqevk-robot-foxy ]
$ bitbake imx-robot-core
[or bitbake imx-robot-system ]
[or bitbake imx-robot-sdk ]
And if you add XENOMAI_KERNEL_MODE = "cobalt" or XENOMAI_KERNEL_MODE = "mercury" in local.conf, you also can build real-time image with Xenomai by the below command:
$ bitbake imx-robot-core-rt
[or bitbake imx-robot-system-rt ]
D, Robot image sanity testing
//ROS1 Sanity Test #source /opt/ros/kinetic/setup.sh
[or # source /opt/ros/melodic/setup.sh ]
#echo $LD_LIBRARY_PATH
#roscore &
#rosnode list
#rostopic list #only kinetic
#rosmsg list
#rosnode info /rosout
//ROS2 Sanity Test
#source ros_setup.sh
#echo $LD_LIBRARY_PATH
#ros2 topic list
#ros2 msg list #only dashing
#ros2 interface list
#(sleep 5; ros2 topic pub /chatter std_msgs/String "data: Hello world") &
#ros2 topic echo /chatter
E, Xenomai sanity testing
#/usr/xenomai/demo/cyclictest -p 50 -t 5 -m -n -i 1000
F, vSLAM demo
You can find orb-slam2 demo under <i.MX Yocto folder>/sources/meta-robot-platform/imx/meta-robot/recipes-demo/orb-slam2. You should choose DISTRO=imx-robot-xwayland due to it depends on OpenCV with gtk+.
//////////////////////////////////////// update for Yocto L5.4.70 2.3.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v0.2-L5.4.70-2.3.0 for Yocto release L5.4.70 2.3.0 and it supports i.MX8M series (8MQ,8MM,8MN and 8MP) and i.MX8QM/QXP.
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v0.2-L5.4.70-2.3.0
Updating:
1, Support i.MX8QM and i.MX8QXP
2, Add ROS driver of RPLIDAR and Orbbec 3D cameras in ROS1
3, Upgrade OpenCV to 3.4.13.
4, Add imx-robot-agv image with orb-slam2 demo
5, Fix the issue which failed to create image when adding orb-slam2
6, Fix the issue which failed to create imx-robot sdk image when add package ISP and ML
Note: Currently, orb-slam2 demo don't run on i.MX8MM platform due to its GPU don't support OpenGL ES3.
imx-robot-sdk image is just for building ROS package on i.MX board, not for cross-compile. You can try "bitbake imx-robot-system -c populate_sdk" to create cross-compile sdk without gmssl-bin.
diff --git a/imx/meta-robot/recipes-core/images/imx-robot-system.bb b/imx/meta-robot/recipes-core/images/imx-robot-system.bb index 1991ab10..68f9ad31 100644 --- a/imx/meta-robot/recipes-core/images/imx-robot-system.bb +++ b/imx/meta-robot/recipes-core/images/imx-robot-system.bb @@ -35,7 +35,7 @@ CORE_IMAGE_EXTRA_INSTALL += " \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'weston-xwayland xterm', '', d)} \ ${ISP_PKGS} \ " -IMAGE_INSTALL += " clblast openblas libeigen opencv gmssl-bin" +IMAGE_INSTALL += " clblast openblas libeigen opencv" IMAGE_INSTALL += " \ ${ML_PKGS} \
//////////////////////////////////////// Update for Yocto L5.4.70 2.3.2 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v0.3-L5.4.70-2.3.2 for Yocto release L5.4.70 2.3.2 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v0.3-L5.4.70-2.3.2
Updated:
1, Upgrade to L5.4.70-2.3.2
2, Enable xenomai rtdm driver
3, Add NXP Software Content Register and BSP patches of i.MX8M Plus AI Robot board.
Note: How to build for AI Robot board
1, DISTRO=imx-robot-wayland MACHINE=imx8mp-ddr4-ipc source setup-imx-robot.sh -r melodic -b imx8mp-ddr4-ipc-robot-melodic
2, Add BBLAYERS += " ${BSPDIR}/sources/meta-robot-platform/imx/meta-imx8mp-ai-robot " in bblayers.conf
3, bitbake imx-robot-sdk or bitbake imx-robot-agv
//////////////////////////////////////// Update for v1.0-L5.4.70-2.3.2 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v1.0-L5.4.70-2.3.2 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v1.0-L5.4.70-2.3.2
Updated:
1, Upgrade ROS1 Kinetic Kame to Release 2021-05-11 which is final sync.
2, Add IgH EtherCAT Master for Linux in i.MX Robot platform.
//////////////////////////////////////// Update for v1.1-L5.4.70-2.3.2 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v1.1-L5.4.70-2.3.2 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v1.1-L5.4.70-2.3.2
Updated:
1, Add more packages passed building in ROS1 Kinetic Kame.
2, Change the board name (From IPC to AI-Robot) in Uboot and kernel for i.MX8M Plus AI Robot board. You can use the below setup command to build ROS image for AI Robot board:
DISTRO=imx-robot-xwayland MACHINE=imx8mp-ai-robot source setup-imx-robot.sh -r kinetic -b imx8mp-ai-robot-robot-kinetic DISTRO=imx-robot-xwayland MACHINE=imx8mp-ai-robot source setup-imx-robot.sh -r melodic -b imx8mp-ai-robot-robot-melodic DISTRO=imx-robot-xwayland MACHINE=imx8mp-ai-robot source setup-imx-robot.sh -r dashing -b imx8mp-ai-robot-robot-dashing DISTRO=imx-robot-xwayland MACHINE=imx8mp-ai-robot source setup-imx-robot.sh -r eloquent -b imx8mp-ai-robot-robot-eloquent DISTRO=imx-robot-xwayland MACHINE=imx8mp-ai-robot source setup-imx-robot.sh -r foxy -b imx8mp-ai-robot-robot-foxy
BTW, you should add BBLAYERS += " ${BSPDIR}/sources/meta-robot-platform/imx/meta-imx8mp-ai-robot " in conf/bblayers.conf.
//////////////////////////////////////// Update for v1.2-L5.4.70-2.3.3 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v1.2-L5.4.70-2.3.3 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v1.2-L5.4.70-2.3.3
Updated:
1, Update to Yocto release L5.4.70-2.3.3
2, Enable RTNet FEC driver, test on i.MX8M Mini EVK and i.MX8M Plus EVK. For the detailed information, Please refer to the community post 移植实时Linux方案Xenomai到i.MX ARM64平台 (Enable Xenomai on i.MX ARM64 Platform)
//////////////////////////////////////// Update for v2.1-L5.10.52-2.1.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v2.1-L5.10.52-2.1.0 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v2.1.1-L5.10.52-2.1.0
Updated:
1, Update to Yocto release L5.10.52-2.1.0
2, Add ROS1 noetic, ROS2 galactic and rolling
3, Upgrade Xenomai to v3.2
4, Add vSLAM demo orb-slam3
5, Upgrade OpenCV to 3.4.15 for ROS1
A, Adding the meta-robot-platform layer to your build
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
B, How to build Robot image (example for i.MX8M Plus EVK board)
$ DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r kinetic -b imx8mpevk-robot-kinetic
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r melodic -b imx8mpevk-robot-melodic ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r noetic-b imx8mpevk-robot-noetic]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r dashing -b imx8mpevk-robot-dashing ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r eloquent -b imx8mpevk-robot-eloquent ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r foxy -b imx8mpevk-robot-foxy ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r galactic -b imx8mpevk-robot-galactic ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r rolling -b imx8mpevk-robot-rolling ]
$ bitbake imx-robot-agv
[or bitbake imx-robot-core ]
[or bitbake imx-robot-system ]
[or bitbake imx-robot-sdk ]
//////////////////////////////////////// Update for v2.2-L5.10.72-2.2.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v2.2-L5.10.72-2.2.0 .
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v2.2.0-L5.10.72-2.2.0
Updated:
1, Update to Yocto release L5.10.72-2.2.0
//////////////////////////////////////// Update for v2.2.3-L5.10.72-2.2.3 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v2.2.3-L5.10.72-2.2.3.
repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-hardknott -m imx-5.10.72-2.2.3.xml
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v2.2.3-L5.10.72-2.2.3
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
Updated:
1, Update to Yocto release L5.10.72-2.2.3
2, Update ISP SDK (isp-imx) patch for Github changing.
//////////////////////////////////////// Update for v3.1-L5.15.71-2.2.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v3.1-L5.15.71-2.2.0.
repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-kirkstone -m imx-5.15.71-2.2.0.xml
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v3.1-L5.15.71-2.2.0
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
Updated:
1, Update to Yocto release L5.15.71-2.2.0 and ROS1 Noetic and ROS2 Foxy to last version
2, Add ROS2 Humble and remove EOL distributions (ROS1 Kinetic, Melodic and ROS2 Dashing, Eloquent and Galactic).
How to build Robot image (example for i.MX8M Plus EVK board)
$DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r noetic-b imx8mpevk-robot-noetic
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r foxy -b imx8mpevk-robot-foxy ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r humble -b imx8mpevk-robot-humble ]
$ bitbake imx-robot-sdk
[or bitbake imx-robot-core ]
[or bitbake imx-robot-system ]
[or bitbake imx-robot-agv ]
//////////////////////////////////////// Update for v3.3-L5.15.71-2.2.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v3.3-L5.15.71-2.2.0.
repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-kirkstone -m imx-5.15.71-2.2.0.xml
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout v3.3-L5.15.71-2.2.0
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
Updated:
1, Add vSLAM ROS demo based on i.MX vSLAM SDK and i.MX AIBot.
The demo video is here:
Autonomous Navigation with vSLAM, Based on the i.MX 8M Plus Applications Processor
2, Enable DDS Security and SROS2 for ROS 2’s security features.
How to build Robot image (example for i.MX8M Plus EVK board)
$DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r noetic-b imx8mpevk-robot-noetic
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r foxy -b imx8mpevk-robot-foxy ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r humble -b imx8mpevk-robot-humble ]
$ bitbake imx-robot-sdk
[or bitbake imx-robot-agv ]
[or bitbake imx-robot-system ]
[or bitbake imx-robot-core ]
//////////////////////////////////////// Update for v4.0-L6.1.55-2.2.0 ///////////////////////////////////////////////////////////
New release package meta-robot-platform-v4.0-L6.1.55-2.2.0.
repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.55-2.2.0.xml
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
git checkout mickledore-6.1.55
1, copy meta-robot-platform into <i.MX Yocto folder>/source
2, You should create a symbol link: setup-imx-robot.sh -> sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh
Updated:
1, Migrate i.MX Robot platform to Yocto mickledore with L6.1.55.
2, Add ROS2 iron.
How to build Robot image (example for i.MX8M Plus EVK board)
$DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r humble -b imx8mpevk-robot-humble
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r iron -b imx8mpevk-robot-iron ]
[or DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r noetic-b imx8mpevk-robot-noetic]
$ bitbake -k imx-robot-sdk
[or bitbake imx-robot-agv ]
[or bitbake imx-robot-system ]
[or bitbake imx-robot-core ]
View full article