DOs:
vim or nano (unless you're a Vim master, this is mostly good for hotfixes).
git push on your computer and git pull on the robot).
DON'Ts:
/local folder on the robots. find commands in the home directory of the robot. If you call it on a folder with many files, it literally kills the wifi for everybody.ssh -X … on the robot and run the IDE in there). The user experience from an IDE running over X11 tunnel is very bad. There might be exceptions, i.e. if you want to put a breakpoint in some code running on the robot, you might have to run the IDE directly on the robot in this way.The technical solution allowing to run a fully remotely managed fleet of robots and desktops on the very slow and unreliable network connection is actually quite interesting. If you're interested in details, read Turtlebot technical details (Czech only)
If you're wondering where you should run which part of the code, the rule is quite simple.
Drivers of the robot and sensor processing has to run on the robot (all the *_real.launch.xml files from homeworks).
Visualization and teleoperation tools have to run on your laptop or lab desktop PC (rviz, *_rviz.launch.xml, real_robot_*_teleop.launch.xml, …).
turtle01, turtle02, turtle08-turtle13, turn it on (after turning on the base, wait 10 seconds to check whether the PC power-on light went on; if not, press the power-on button to start the computer).
# on the desktop PC ssh -YC your_ctu_username@turtle08 # type in your CTU password
# on robot: git clone https://gitlab.fel.cvut.cz/robolab/deploy.git
# on robot: ~/deploy/scripts/start_apptainer_aro tmux # (the console prompt should start with ARO) ros2 run rmw_zenoh_cpp rmw_zenohd # keep zenohd running and open a new tmux tab with ''Ctrl-b+c'' or ''Ctrl-a+c'' ros2 launch aro_exploration real_robot.launch.xml # in a new tmux tab, start the base robot driver
# on robot: ros2 launch aro_exploration aro_localization_real.launch.xml run_driver:=false # in a new tmux tab, start the homework-specific launch file
# on the desktop PC # Replace turtleXY with the actual hostname of your turtlebot or with its IPv4 address export ZENOH_CONFIG_OVERRIDE='mode="client";connect/endpoints=["tcp/turtleXY:7447"]' ~/deploy/scripts/start_apptainer_aro # (the console prompt should start with ARO) ros2 topic list # List all topics ros2 run rqt_tf_tree rqt_tf_tree # Show TF frames ros2 run rqt_graph rqt_graph # Show all nodes and topics rviz2 # 3D visualizer ros2 launch aro_exploration aro_localization_rviz.launch.xml # 3D visualizer preconfigured for a specific homework ros2 launch aro_exploration real_robot_key_teleop.launch.xml # Control the robot via keyboard ros2 launch aro_exploration real_robot_joy_teleop.launch.xml # Control the robot via the connected gamepad code . # Start VSCode inside the Singularity container pycharm # Start Pycharm inside the Singularity container subl # Start Sublime editor inside the Singularity container
aro_reactive_control package, e.g. ros2 launch aro_exploration aro_slam_real.launch.xml run_driver:=false reactive_control:=true # run on the robot!.
turtle01, turtle02, turtle08-turtle13, turn it on (after turning on the base, wait 10 seconds to check whether the PC power-on light went on; if not, press the power-on button to start the computer).
SSID: turtlebots, password: TurtlesDC .
ping turtle08
turtlebots wifi. If you still cannot ping the robot by its hostname, try pinging its IP address, e.g. 192.168.65.21 (it is written on the robot).
# on your laptop ssh -XYC your_ctu_username@turtle08
rsync to synchronize files from your computer to the robot: # on your laptop rsync -aAP /your/path/to/workspace/src/ your_ctu_username@turtle08:workspace/src # The ending / after the first path is important, as well as not having a / after the 2nd path
# on robot ~/deploy/scripts/start_apptainer_aro tmux # (the console prompt should start with ARO) ros2 run rmw_zenoh_cpp rmw_zenohd # keep zenohd running and open a new tmux tab with ''Ctrl-b+c'' ros2 launch aro_exploration real_robot.launch.xml # in a new tmux tab, start the base robot driver ros2 launch aro_exploration aro_localization_real.launch.xml run_driver:=false # in a new tmux tab, start the homework-specific launch file
To configure passwordless login to the robots, run the following commands on the desktop or on your laptop:
ssh-keygen # Only if you don't yet have an SSH key yet (stored in ~/.ssh/id_rsa) ssh-copy-id your_ctu_username@turtle08
ping my-computer-hostname (outside of Apptainer). You can figure out the hostname of your computer e.g. by calling command hostname on your laptop. If the ping command does not succeed, disable wifi on your computer, connect cable, wait a few minutes and reboot your computer. This should resolve the issue.
ros2 topic list is almost empty or cannot communicate with master):
export ZENOH_CONFIG_OVERRIDE='mode="client";connect/endpoints=["tcp/turtleXY:7447"]' (with the correct turtle name) in the console where you try to communicate with the robot.
ros2 daemon stop on your computer.
turtlebots wifi.
ping turtle08 (do that from outside the Apptainer in a normal system terminal).
/etc/resolv.conf file. Run ls -la /etc/resolv.conf. The file should be a symbolic link. If it's not, you have configured your system to use a custom DNS server and you have to revert this configuration. If the file is a symlink, try cat /etc/resolv.conf. If it contains entries like 127.0.1.1, 127.0.0.1 or 192.168.65.5, that's okay. If it contains other entries, check your wired or wireless connection settings and configure it for automatic DNS.
~/.tmux.conf)
set-option -g default-shell /bin/bash
start_apptainer_aro fails with various error messages like “image format not recognized” and similar.