Scorpi
(→Ros2 domain) |
(→Ros2 Iron) |
||
Line 66: | Line 66: | ||
$ export LANG=en_DK.UTF-8 | $ export LANG=en_DK.UTF-8 | ||
− | + | Compiled packages are not supported for Raspberry 64-bit OS, so install from source, | |
− | + | Followed: | |
− | + | ||
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html | https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html | ||
− | + | The result goes into ~/ros2_iron | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | Note that ''rosdep'' fails in most cases, as the platform is not that much supported. |
+ | Manual dependency updates are therefore used in most cases. | ||
+ | |||
+ | Note, this command takes maybe 3 hours to compile all (on Raspberry Pi 5 - (8G memory): | ||
+ | |||
+ | cd ~/ros2_iron/ | ||
+ | colcon build --symlink-install | ||
+ | |||
+ | Add this line to ~/.bashrc | ||
+ | source /home/local/ros2_iron/install/setup.bash | ||
+ | |||
+ | The examples should now work (in separate terminals) | ||
+ | ros2 run demo_nodes_cpp talker | ||
+ | ros2 run demo_nodes_py listener | ||
+ | |||
+ | === ROS2 domain === | ||
Ros2 domain over local network | Ros2 domain over local network | ||
Line 99: | Line 105: | ||
In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8." | In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8." | ||
− | If used | + | If used, insert these into ~/.bashrc |
+ | export ROS_DOMAIN_ID=8 | ||
+ | export ROS_LOCALHOST_ONLY="0" | ||
ROS_DOMAIN=0 is the default. | ROS_DOMAIN=0 is the default. | ||
+ | |||
+ | ==YDLidar driver== | ||
+ | |||
+ | Make a new ROS2 workspace for this application, here called ''scorpi_ws'' | ||
+ | |||
+ | mkdir -p ~/scorpi/src | ||
+ | cd scorpi_ws/src | ||
+ | |||
+ | Get the modified YDLidar driver (modified for ''iron'') | ||
+ | |||
+ | ls | ||
+ | ydlidar_ros2 | ||
+ | |||
+ | Modify scorpi_ws/src/ydlidar/params/ydlidar.yaml to the type of YDlidar you use, | ||
+ | For YDlidar X4 it could look like | ||
+ | ydlidar_node: | ||
+ | ros__parameters: | ||
+ | port: /dev/ttyUSB0 | ||
+ | frame_id: laser_frame | ||
+ | ignore_array: "" | ||
+ | baudrate: 128000 | ||
+ | samp_rate: 9 | ||
+ | resolution_fixed: true | ||
+ | singleChannel: false | ||
+ | auto_reconnect: true | ||
+ | reversion: true | ||
+ | isToFLidar: false | ||
+ | angle_max: 180.0 | ||
+ | angle_min: -180.0 | ||
+ | max_range: 16.0 | ||
+ | min_range: 0.1 | ||
+ | frequency: 10.0 | ||
+ | |||
+ | Now build the driver | ||
+ | |||
+ | cd .. | ||
+ | colcon build | ||
+ | |||
+ | You should get a few warnings only. | ||
+ | |||
+ | With the YDLidar X4 connected test with the driver nodes. | ||
+ | |||
+ | cd ~/scorpi_ws | ||
+ | ros2 run ydlidar ydlidar_node | ||
+ | |||
+ | And get something like: | ||
+ | |||
+ | [YDLIDAR INFO] Current ROS Driver Version: 1.4.5 | ||
+ | [YDLIDAR INFO] port: /dev/ttyUSB0 | ||
+ | [YDLIDAR INFO] baudrate: 128000 | ||
+ | [YDLIDAR]:SDK Version: 1.4.5 | ||
+ | [YDLIDAR]:Lidar running correctly ! The health status: good | ||
+ | [YDLIDAR] Connection established in [/dev/ttyUSB0][128000]: | ||
+ | Firmware version: 1.4 | ||
+ | Hardware version: 1 | ||
+ | Model: X4 | ||
+ | Serial: 2018060400000037 | ||
+ | [YDLIDAR INFO] Current Sampling Rate : 5K | ||
+ | [YDLIDAR INFO] Now YDLIDAR is scanning ...... | ||
+ | |||
+ | The node should publish /scan, e.g.: | ||
+ | |||
+ | ros2 topic list | ||
+ | /parameter_events | ||
+ | /rosout | ||
+ | /scan | ||
+ | |||
+ | == SLAM toolbox == | ||
+ | |||
+ | Fetch the SLAM toolbox from https://github.com/SteveMacenski/slam_toolbox.git | ||
+ | |||
+ | cd ~/scorpi_ws/src | ||
+ | git clone https://github.com/SteveMacenski/slam_toolbox.git | ||
+ | |||
+ | This can not be build right away, as some dependencies are missing | ||
+ | |||
+ | sudo apt install libsuitesparse-dev | ||
+ | sudo apt install libeigen3-dev | ||
+ | sudo apt install libceres-dev | ||
+ | # sudo apt install libquantlib0-dev | ||
+ | |||
+ | cd ~/scorpi_ws | ||
+ | colcon build | ||
+ | |||
+ | Compile failed with: | ||
+ | |||
+ | In file included from /home/local/scorpi_ws/src/slam_toolbox/src/slam_toolbox_common.cpp:23: | ||
+ | /home/local/scorpi_ws/src/slam_toolbox/include/slam_toolbox/slam_toolbox_common.hpp:34:10: fatal error: bondcpp/bond.hpp: No such file or directory | ||
+ | 34 | #include "bondcpp/bond.hpp" |
Revision as of 12:36, 16 April 2024
Contents |
Overview
Development nodes
Raspberry pi
Raspberry pi 5 installation
- enable serial IO hardware (GPIO pin 14,15) - but it doesn't seem to work on pi-5, can't read or write.
Install packages:
libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude ntp ntpdate nmap lsof swig sudo apt install libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude nmap lsof swig
YDLidar (S4B)
YDlidar serial connected like this:
YDLIDAR cable color Raspberry 1 Vcc (5V) black 4 (5V) 2 Tx red 10 (GPIO 15) (RxD) 3 Rx white 8 (GPIO 14)(TxD) 4 Gnd Yellow 6 (Ground) 5 M_SCP Orange 18 (GPIO 24) 6 Dev_enable Green 16 (GPIO 23) 7 M_enable Blue 12 (GPIO 18) 8 NC Purple 14 (ground, to use all pins)
Software YDLidar-SDK
From Git repository
$ mkdir -p git $ cd git $ git clone https://github.com/YDLIDAR/YDLidar-SDK.git $ cd YDLidar-SDK $ mkdir build $ cd build $ cmake .. $ make -j4
Ros2 Iron
Installation on Raspberry Pi 5 running default 64-bit OS: Debian GNU/Linux 12 (bookworm)
Base
Add en_DK.UTF-8 in this list
$ sudo dpkg-reconfigure locales
Then run
$ sudo update-locale LC_ALL=en_DK.UTF-8 LANG=en_DK.UTF-8 $ export LANG=en_DK.UTF-8
Compiled packages are not supported for Raspberry 64-bit OS, so install from source, Followed:
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html
The result goes into ~/ros2_iron
Note that rosdep fails in most cases, as the platform is not that much supported. Manual dependency updates are therefore used in most cases.
Note, this command takes maybe 3 hours to compile all (on Raspberry Pi 5 - (8G memory):
cd ~/ros2_iron/ colcon build --symlink-install
Add this line to ~/.bashrc
source /home/local/ros2_iron/install/setup.bash
The examples should now work (in separate terminals)
ros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener
ROS2 domain
Ros2 domain over local network
$export | grep ROS_
could show
declare -x ROS_AUTOMATIC_DISCOVERY_RANGE="SUBNET" declare -x ROS_DISTRO="iron" declare -x ROS_DOMAIN_ID="8" declare -x ROS_LOCALHOST_ONLY="0" declare -x ROS_PYTHON_VERSION="3" declare -x ROS_VERSION="2"
In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8."
If used, insert these into ~/.bashrc
export ROS_DOMAIN_ID=8 export ROS_LOCALHOST_ONLY="0"
ROS_DOMAIN=0 is the default.
YDLidar driver
Make a new ROS2 workspace for this application, here called scorpi_ws
mkdir -p ~/scorpi/src cd scorpi_ws/src
Get the modified YDLidar driver (modified for iron)
ls ydlidar_ros2
Modify scorpi_ws/src/ydlidar/params/ydlidar.yaml to the type of YDlidar you use, For YDlidar X4 it could look like
ydlidar_node: ros__parameters: port: /dev/ttyUSB0 frame_id: laser_frame ignore_array: "" baudrate: 128000 samp_rate: 9 resolution_fixed: true singleChannel: false auto_reconnect: true reversion: true isToFLidar: false angle_max: 180.0 angle_min: -180.0 max_range: 16.0 min_range: 0.1 frequency: 10.0
Now build the driver
cd .. colcon build
You should get a few warnings only.
With the YDLidar X4 connected test with the driver nodes.
cd ~/scorpi_ws ros2 run ydlidar ydlidar_node
And get something like:
[YDLIDAR INFO] Current ROS Driver Version: 1.4.5 [YDLIDAR INFO] port: /dev/ttyUSB0 [YDLIDAR INFO] baudrate: 128000 [YDLIDAR]:SDK Version: 1.4.5 [YDLIDAR]:Lidar running correctly ! The health status: good [YDLIDAR] Connection established in [/dev/ttyUSB0][128000]: Firmware version: 1.4 Hardware version: 1 Model: X4 Serial: 2018060400000037 [YDLIDAR INFO] Current Sampling Rate : 5K [YDLIDAR INFO] Now YDLIDAR is scanning ......
The node should publish /scan, e.g.:
ros2 topic list /parameter_events /rosout /scan
SLAM toolbox
Fetch the SLAM toolbox from https://github.com/SteveMacenski/slam_toolbox.git
cd ~/scorpi_ws/src git clone https://github.com/SteveMacenski/slam_toolbox.git
This can not be build right away, as some dependencies are missing
sudo apt install libsuitesparse-dev sudo apt install libeigen3-dev sudo apt install libceres-dev # sudo apt install libquantlib0-dev
cd ~/scorpi_ws colcon build
Compile failed with:
In file included from /home/local/scorpi_ws/src/slam_toolbox/src/slam_toolbox_common.cpp:23: /home/local/scorpi_ws/src/slam_toolbox/include/slam_toolbox/slam_toolbox_common.hpp:34:10: fatal error: bondcpp/bond.hpp: No such file or directory
34 | #include "bondcpp/bond.hpp"