NXP Linux Yocto Project for “Cerebellum” (aka motion controller) of Humandoid Robot PoC (Proof of Concept)
This README contains instructions for setting up a Yocto build for the PoC release image.
To get the BSP you need to have repo installed.
$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ PATH=${PATH}:~/bin
$ mkdir motioncontroller
$ cd motioncontroller
$ repo init -u https://github.com/nxp-auto/grayvip-manifests -b release/GrayVIP-1.0.6.4 -m default.xml
$ repo sync
If you want to create a new build folder for Ubuntu 22.04 (Jammy) with ROS 2 Humble:
$ source sources/meta-nxp-motioncontroller/meta-jammy-humble/tools/nxp-setup-motioncontroller.sh -D fsl-grayvip -m s32n79rdbubuntu -p hw-partition-1.1.5
or Ubutu 24.04 (Noble) with ROS 2 Jazzy:
$ source sources/meta-nxp-motioncontroller/meta-noble-jazzy/tools/nxp-setup-motioncontroller.sh -D fsl-grayvip -m s32n79rdbubuntu -p hw-partition-1.1.5
Note: The available build MACHINEs for below boards:
s32n79rdb - S32N79 RDB
If you want to build in an existing build folder for Ubuntu 22.04 (Jammy) with ROS 2 Humble:
$ cd motioncontroller
$ source sources/meta-nxp-motioncontroller/meta-jammy-humble/tools/setup-environment build_s32n79rdbubuntu_hw-partition-1.1.5
or Ubutu 24.04 (Noble) with ROS 2 Jazzy:
$ source sources/meta-nxp-motioncontroller/meta-noble-jazzy/tools/setup-environment build_s32n79rdbubuntu_hw-partition-1.1.5
$ bitbake -k nxp-image-ubuntu-ros2
If you want to have some basic testing on Ubuntu 22.04 (Jammy) with ROS 2 Humble, you can following the ROS2 documentation (https://docs.ros.org/en/humble/index.html) and do the basic testing as below:
$ source /opt/ros/humble/setup.sh
$ echo $LD_LIBRARY_PATH
$ ros2 topic list
$ ros2 interface list
$ (sleep 2; ros2 topic pub /chatter std_msgs/String "data: Hello world") &
$ ros2 topic echo /chatter
$ ros2 run demo_nodes_cpp talker --ros-args --enclave /talker_listener/talker
$ ros2 run demo_nodes_cpp listener --ros-args --enclave /talker_listener/listener
MobaXterm can be used to connect to the target board via SSH, and start RVIZ2 remotely.
$ source /opt/ros/humble/setup.sh
$ ros2 run rviz2 rviz2
And for several motor control communication protocols, you can refer to online documentation, Modbus https://docs.nxp.com/bundle/REALTIMEEDGEUG/page/topics/protocols/modbus.html, for Canopen https://canfestival.org/doc.
The default PoC build will create the account "user" with the password "user" for motion controller evaluation.
If you want to add multiple account, you can set as below in <build_dir>/conf/local.conf. (every user setting should be splitted by a space).
APTGET_ADD_USERS:append = " user1:<password hash>:${USER_SHELL_BASH} user2:<password hash>:${USER_SHELL_BASH}"
How to generate password hash value? LDP system passwrod generated by openssl algorithm,the default algorithm is MD5, such as:
$ openssl passwd -1 ab123
Then return value is "$1$FP6PEJWC$e7l2p4w5ek4XDRRrdAwIo/" from terminal, write this value in local.conf
APTGET_ADD_USERS:append = " user1:\$1\$FP6PEJWC\$e7l2p4w5ek4XDRRrdAwIo/:${USER_SHELL_BASH}"
Important: if the value contain "$", it should escape with "\$".
After build image, you can log in with "user1:ab123" or "user:user"