Web version: https://hackmd.io/@cocobird231/BJidBuC6i
Updated: 2024/04/26
Guidance for hardware installation: rpi_sensors Hardware Installation
The package installer for sensor depends on Raspberry Pi 4. The ROS2 environment is based on Docker.
System requirements:
Now supported sensor types:
ros2_docker
Under Home Path)Run the pre-install scriptget-rpi-sensors-install.sh
to grab git controlled SensorPack directory (renamed as ros2_docker
). Make sure Raspberry Pi 4 is connected to the internet before installation.
curl -fsSL ftp://61.220.23.239/rv-12/get-rpi-sensors-install.sh | bash
The new directory ros2_docker
will be created under $HOME
.
install.sh
under ros2_docker
to install package for selected module.
. ~/ros2_docker/install.sh
Effects After Installation
$HOME/ros2_docker
run.sh.tmp
Dockerfile.tmp
.modulename
(selected module pack name).moduleinterface
(interface setting).modulename
(IP setting)common.yaml
(copy from codePack package)service.json
(copy from codePack package)/boot/config.txt.tmp
/etc/dhcpcd.conf.tmp
/etc/xdg/autostart/ros2_docker.desktop
(startup)python3
python3-dev
python3-pip
git
curl
Docker
requirement_apt.txt
.requirement_pip.txt
.install.sh
under ros2_docker
directory and enter u
for update process.
. install.sh
# Enter 'u' for update process
codePack
under ros2_docker
by pulling repositories from git server.install.sh
under ros2_docker
directory and enter r
for package remove process.
. install.sh
# Enter 'r' for update process
The files which describes at Effects After Installation section will be removed except the files installed from requirement_apt.txt
and requirement_pip.txt
.
sudo docker ps -a
sudo docker stop <container_id>
sudo docker rm <container_id>
sudo docker images
sudo docker rmi <image_id>
Settings may be varient in different sensors, but there are some common parameters need to be changed:
generic_prop
tag)generic_prop
tag)1
but 1.0
)Modify the settings under $HOME/ros2_docker/common.yaml
and reboot device.
The install.sh
now supported parser installation.
The package installation, updating and removal functions can be done by adding some arguments while running install.sh
.
. install.sh [[-i|--install] <package_name>] [--interface <network_interface>] [--ip [<static_ip>|dhcp]] [-rm|--remove] [-u|--update] [-p|--preserve]
-i|--install
: install specific package from codePack to Docker.-rm|--remove
: remove package settings and environment settings.-u|--update
: update codePack without install packages.-p|--preserve
: preserve common.yaml
file during installation.--interface
: determine the network interface during installation.--ip
: determine the network ip during installation.auto
, the process will automatically detect current installed module settings, then install the packages.eth0
or wlan0
.ip/mask
, e.g. 192.168.1.10/16
.The three commands -i
, -u
and -rm
can be work independently. The priority order of the three commands from high to low are: -rm
> -u
> -i
. That is, if three commands exists at the same time, the process will be:
The flag -p
tells the installer to keep old common.yaml
file. If -p
set but -i
not set, the -p
will be ignored. If -p
set but the common.yaml
file not found, the preservation will be ignored.
The --interface
determines the network interface for network detection or internet detection while installed program startup. The --interface
will be ignored if -i
not set. The --interface
is not necessary and will be set to default eth0
.
The --ip
can be set to dhcp
and <static_ip>
. If <static_ip>
used, The /etc/dhcpcd.conf
will be configured. The --ip
is not necessary and will be set to default dhcp
.
The default value of the variables describes as following:
package_name
: NONE
network_interface
: eth0
static_ip
: NONE
The package_name
is necessary if -i
set. The valid name of package_name
were shown under codePack. If the package had installed before, set package_name
to auto
is valid for process to auto detect the package name.
If package_name
set to auto
, the process will ignored --interface
and --ip
settings.
The network_interface
is necessary if --interface
set. The network_interface
do not have any valid check mechanism, be careful of the mistyping.
The static_ip
is necessary if --ip
not set to dhcp
.
. install.sh -i <package_name> [--interface <network_interface>] [--ip [<static_ip> | dhcp]]
. install.sh -u
. install.sh -i <package_name> [--interface <network_interface>] [--ip [<static_ip> | dhcp]] -u
common.yaml
. install.sh -u -i auto -p
. install.sh -rm
. install.sh -rm -u -i <package_name> [--interface <network_interface>] [--ip [<static_ip> | dhcp]]